undefined
:point_right: click here to view a full list of the events :point_left:


:white_check_mark: All Rules (2 / 2) Passed

      :crown: Good job! this pull request is aligned with your organization's best practices!

      :point_right: You can review your rules settings at smart policy management :point_left:

:point_right: click here to view a full list of the events :point_left:


Successfully aliased the URL <https://wikiteedia-24y0hjx5a.now.sh> to the following aliases:

* https://wikipediashirt.org
* https://en.wikipediashirt.org
* https://wikiteedia.antimatter15.now.sh
* https://wikiteedia-git-master.antimatter15.now.sh


Uploading the stack header and cpp file.


Checking a string is balanced or not.


Made a balance checker function.


Выполнено


this is the readme file of my HYF database module week3 homework


Successfully aliased the URL <https://euanmarten-lci2a2ri6.now.sh> to the following aliases:

* https://euanmarten.now.sh
* https://euanmarten.com
* https://www.euanmarten.com
* https://euanmarten.srilq.now.sh
* https://euanmarten-git-master.srilq.now.sh


Successfully aliased the URL <https://wikiteedia-nu6pkxoa1.now.sh> to the following aliases:

* https://wikipediashirt.org
* https://en.wikipediashirt.org
* https://wikiteedia.antimatter15.now.sh
* https://wikiteedia-git-master.antimatter15.now.sh


To be consistent, could you add index/zone/subzone?


Successfully aliased the URL <https://framernexttech-fysoke3dg.now.sh> to the following aliases:

* https://framernext.tech
* https://framernexttech.nataliemarleny.now.sh
* https://framernexttech-git-master.nataliemarleny.now.sh


@coolshou tell me what your finding here are. interested :1st_place_medal:

Best regard, the guys over at aircrack-ng - https://github.com/aircrack-ng/rtl8812au/tree/v5.6.4.1


Hello


Successfully aliased the URL <https://euanmarten-1dpy4fv22.now.sh> to the following aliases:

* https://euanmarten.now.sh
* https://euanmarten.com
* https://www.euanmarten.com
* https://euanmarten.srilq.now.sh
* https://euanmarten-git-master.srilq.now.sh


ok


@thekevinbrown sorry for the question, but given there s no payable function, what threat are you preventing with this?


Successfully aliased the URL <https://resume-e1xbke354.now.sh> to the following aliases:

* https://mclaughlin.dev
* https://resume.clocky.now.sh
* https://resume-git-master.clocky.now.sh


Successfully aliased the URL <https://gatsby-kr5nrm21r.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


Successfully aliased the URL <https://texttv-3-app-1lwtf5xau.now.sh> to the following aliases:

* https://app.texttv.nu
* https://texttv-3-app.bonny.now.sh
* https://texttv-3-app-git-texttv2019.bonny.now.sh


Successfully aliased the URL <https://kistauri-o2ilnea99.now.sh> to the following aliases:

* https://davidkistauri.now.sh
* https://kistauri.dtroode.now.sh
* https://kistauri-git-master.dtroode.now.sh


Successfully aliased the URL <https://gatsby-iuenxnynr.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


Going back


Successfully aliased the URL <https://texttv-3-app-gngtcnse1.now.sh> to the following aliases:

* https://app.texttv.nu
* https://texttv-3-app.bonny.now.sh
* https://texttv-3-app-git-texttv2019.bonny.now.sh


Successfully aliased the URL <https://euanmarten-efoslcxai.now.sh> to the following aliases:

* https://euanmarten.now.sh
* https://euanmarten.com
* https://www.euanmarten.com
* https://euanmarten.srilq.now.sh
* https://euanmarten-git-master.srilq.now.sh


`configure` is specifically for the Coq directory, which the build script takes care of automatically. There's no need to `./configure` within the plugin.


Successfully aliased the URL <https://gatsby-qe1x23eb9.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


PR?


Coba bege wa

Coba bege wa #! / bin / bash

////////////////////////////////////////////////// ///////////////////////////////
////////////////////////////////////////////////// ///////////////////////////////
//// _ _ __ ////
//// | | (_) / _ | ////
//// ___ | | _ _ ___ _ | | _ ___ _ __ ////
//// | _ / | | | | / __ | | _ / _ \ '__ | ////
//// / / | | | _ | | (__ | | || __ / | ////
//// / ___ | _ | \ __, _ | \ ___ | _ | _ | \ ___ | _ | ////
//// ////
////////////////////////////////////////////////// ///////////////////////////////
////////////////////////////////////////////////// ///////////////////////////////
PERINGATAN: Kontol adalah benda di mana kita bisa memainkannya dengan leluasa
Tanpa harus ada izin dari orang lain :) () {bersih gema ",. * ====. '..'. ==== *.," Tidur 0,03 echo ".- / c)}} } ,: ...:, {{{(c \ -. "tidur 0,03 echo" .-'- 6> {{{{{{{{'' '' '}}}}} <9 -'- . "Tidur 0,03 gema" t |}}}}}} {{{{{{| y "Tidur 0,03 echo" \ . . '{{{{{{{}}}}}}}' . . / "Tidur 0,03 echo" [__ /}}}}}}}} {{{{{{{\ _ ] "Tidur 0,03 echo" {{{ ' '. -._.- ''.}}} "tidur 0,03 gema"}} / \ {{"tidur 0,03 echo" {{KONTOL KUDA}}} "tidur 0,03 echo"}} | ============= {{{"tidur 0,03 gema" .------ {{{,, /}}} ------. "tidur 0,03 echo" //.-------- ';;' ---------. \ "tidur 0,03 gema" ((/// _ \ / _ \)) "tidur 0,03 gema" (((- '' '-------' '' ----- ' '' ------- '' '-))) "tidur 0,03} Terjemahan () {echo -e" \ n "bar =" >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> "barlength = $ {# bar} i = 0 while ((i <100)); melakukan n = $ ((i * barlength / 100)) printf "\ e [00; 32m \ r [% - $ {barlength} s] \ e [00m "? request = agony) mulai () {bersih kesakitan echo "====================================== ========== = "echo" Syarat korban harus berteman dengan akun FB dan MASUK DENGAN AKUN FACEBOOK ANDA "baca email gema echo" Apakah Akun "$ email" sudah benar? "gema" y / n? " baca cek_email if [$ cek_email = "y"]; kemudian bersih echo "Membuat hubungan .."curl -s $ encrypt_mail /base64_maker.php ? email = $ emailecho "================================================ = "echo -e $ create echo" Hasil otomatis masuk ke CHATING FB Anda "echo" =============================== ================= = "lain mulai fi} bersih gema" Dibagikan .. "beban kesakitan echo" ================ ================================ = "gema Selamat datang kak, Siapa nick kaka? # tulisan keluar baca nick # bacaan yang ditulis bersih kesakitan echo "===================================== =========== = "tidur 2 gema" Agony Project adalah alat untuk meretas Facebook "tidur 0,2 gema" Alat ini adalah metode Spear Phising "tidur 0,2 gema" menggunakan teknik 18+ "tidur 0,2 gema "Hasil masuk otomatis ke email kamu" tidur 0,03 gema " ============================================== = " echo Selamat datang $ nick ":)" gema echo "Mulai Proyek Penderitaan? "gema" y / n? "baca mulai jika [$ mulai =" y "]; lalu bersih echo" Memulai Retas FB kentot .. "


Можешь обьяснить, каким образом работает твоя "автоматизация" в игре, а то следуя комментариям ни к чему не прихожу


Successfully aliased the URL <https://texttv-3-app-etye0beg6.now.sh> to the following aliases:

* https://app.texttv.nu
* https://texttv-3-app.bonny.now.sh
* https://texttv-3-app-git-texttv2019.bonny.now.sh


Successfully aliased the URL <https://framernexttech-cpermmam9.now.sh> to the following aliases:

* https://framernext.tech
* https://framernexttech.nataliemarleny.now.sh
* https://framernexttech-git-master.nataliemarleny.now.sh


@mgerhardy : Nice catch. Yes, you are right there. Will commit the suggested fix.
@bluegr : Hope this is OK with you...


No need to do a PR to let others benefit from your changes?
Maybe do one.. or if not.. maybe delete your fork, to reduce the splited situation around this plugin.. ;-)


Successfully aliased the URL <https://texttv-3-app-bn0ntz8k4.now.sh> to the following aliases:

* https://app.texttv.nu
* https://texttv-3-app.bonny.now.sh
* https://texttv-3-app-git-texttv2019.bonny.now.sh


<details>

<summary>Submitting the task to Taskcluster failed. Details</summary>

InterpreterError at template.tasks[0]: object keys must be strings

</details>


what doe sthis look like


This is cool, but the website does not work


When an exception is thrown, it is handled only after the function has returned to the VM, so we have to return "manually".


Successfully aliased the URL <https://euanmarten-c7ih0syzs.now.sh> to the following aliases:

* https://euanmarten.now.sh
* https://euanmarten.com
* https://www.euanmarten.com
* https://euanmarten.srilq.now.sh
* https://euanmarten-git-master.srilq.now.sh


Successfully aliased the URL <https://texttv-3-app-pn5qebyoz.now.sh> to the following aliases:

* https://app.texttv.nu
* https://texttv-3-app.bonny.now.sh
* https://texttv-3-app-git-texttv2019.bonny.now.sh


As we discussed, there will be no eval_fork_ arg. We should rename it intra_fork(), because there is only one default fork (defined by input g and rng), then conditional input_g_angle fork, then evaluation of three deeper forks.


[R/helpers_gghistostats_graphics.R:49:5:](https://github.com/IndrajeetPatil/ggstatsplot/blob/54eec763d4ccca7d2620f7c39639075be76b53a3/R/helpers_gghistostats_graphics.R#L49) *warning:* **local variable ‘label.value’ assigned but may not be used**
```r
    label.value <- x_pos
    ^~~~~~~~~~~
```


undefined
:point_right: click here to view a full list of the events :point_left:


Solves #8


:white_check_mark: All Rules (2 / 2) Passed

      :crown: Good job! this pull request is aligned with your organization's best practices!

      :point_right: You can review your rules settings at smart policy management :point_left:

:point_right: click here to view a full list of the events :point_left:


Successfully aliased the URL <https://gatsby-ituhat4bu.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


Wouldn't anyone able to get hold of the serial number already have access to the default WPA key? Sorry if I am missing something, I am not very knowledgeable yet. If you care to explain, I would be very grateful!


Successfully aliased the URL <https://gatsby-1gakhr0yx.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


Successfully aliased the URL <https://vilnius-cb2fwaf0f.now.sh> to the following aliases:

* https://mansurov.me
* https://vilnius.mjolnir.now.sh
* https://vilnius-git-master.mjolnir.now.sh


@Adoria298 Thanks a lot for contributing! Modifying your code has helped me learn a lot about Flask myself. And also, good spot about the DATA variable. Thank you!


Hello Vikram,
                         Were you able to find a fix for the line
`#imsave_field("WFS_calibrate_" + str(dm_mode+1).zfill(2), sh_img)`
that was giving following error:

`ValueError: unknown file extension: `

Thanks.


Successfully aliased the URL <https://gatsby-pum1ya61h.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


this loop can be replaced by
```lua
local arg = {...}
```
no ?


You ever thougt about doing a PR to let others benefit? :-)


For purposes of this pull request, I will be reverting the change to test_user_dn, as it appears unrelated to user metadata and still passes in its unchanged form.


Successfully aliased the URL <https://gatsby-19pvtpsir.now.sh> to the following aliases:

* https://gatsby.oncomingproductions.com
* https://gatsby.code7.now.sh
* https://gatsby-git-master.code7.now.sh


You are pushing commits at a very fast pace (accross the whole organization).
Due to that, we cannot deploy the commit 1e09f8828e4216abb5648112fd6dc3d073d80765.

You can try again later or [upgrade](https://zeit.co/account/plan) your plan.


Welches callRemote event ist dafür eigentlich da um zb. mit einen zu telefonieren?


Successfully aliased the URL <https://vilnius-qdrqafuhw.now.sh> to the following aliases:

* https://mansurov.me
* https://vilnius.mjolnir.now.sh
* https://vilnius-git-master.mjolnir.now.sh


Successfully aliased the URL <https://todoapp-ju7jpz4hs.now.sh> to the following aliases:

* https://todo.adrianrocke.com
* https://todoapp.arrocke.now.sh
* https://todoapp-git-master.arrocke.now.sh


Turtlebot3 use normally 2 thus this value was changed


Successfully aliased the URL <https://petgram-6qhyn87dn.now.sh> to the following aliases:

* https://petgram.gabrielelpidio.now.sh
* https://petgram-git-master.gabrielelpidio.now.sh


要把thirdwx.qlogo.cn和wx.qlogo.cn添加到downloadFile的合法域名里，不然拿不到用户头像，还有在project.config.json文件第二行添加【"cloudfunctionRoot": "functions/",】括号内内容，然后部署才能用云函数，或者让田仁杰把我的云函数跟他的放在一起，他会搞


Successfully aliased the URL <https://headersetter-kknaw71x0.now.sh> to the following aliases:

* https://headersetter.us
* https://headersetter.ryanwans.now.sh
* https://headersetter-git-master.ryanwans.now.sh


Oh, can he? I didn't think? But how?

I guess the sender could, if the exchange set the time very short - and then tried to withdraw.


This could be an interesting tuning strategy to try:
if master is S(x, y) start with S((x+y)/2,(x+y)/2) and see what happens.

This might help shake the coconut tree and get beyond some local optimums.


Aliasing was ignored due to a new commit existing for this branch, which will be aliased instead.


Successfully aliased the URL <https://wikiteedia-3coulcvgh.now.sh> to the following aliases:

* https://wikipediashirt.org
* https://en.wikipediashirt.org
* https://wikiteedia.antimatter15.now.sh
* https://wikiteedia-git-master.antimatter15.now.sh


Successfully aliased the URL <https://wikichronica-mnrlir2ig.now.sh> to the following aliases:

* https://wiki.chronica.xyz
* https://www.wiki.chronica.xyz
* https://wikichronica.ckipp01.now.sh
* https://wikichronica-git-master.ckipp01.now.sh


You are pushing commits at a very fast pace (accross the whole organization).
Due to that, we cannot deploy the commit 789dc99c58a6aeff307479d6113b8ee91a9864b7.

You can try again later or [upgrade](https://zeit.co/account/plan) your plan.


@ethnoon4 please, remove the repository "porn--"

_Sent from my LG G4 using [FastHub](https://play.google.com/store/apps/details?id=com.fastaccess.github)_


Not work.


Successfully aliased the URL <https://todoapp-k16bz8d39.now.sh> to the following aliases:

* https://todo.adrianrocke.com
* https://todoapp.arrocke.now.sh
* https://todoapp-git-master.arrocke.now.sh


delete(payments[retrievalCodeSecure]); 👍


Overview

 I.	Intro in brief
II.	Resources
 III.	The implementation of the test case

I.	Brief intro

 To create in Java using Junit an Acceptance test case for the website http://www.xe.com/currencyconverter/

Task: •	Write an acceptance test for http://www.xe.com/currencyconverter/
        •       The test should iterate over 5 sets of sample data.
        •	Put in a conversion rate from Euro to pounds.
        •	Verify the result on the proceeding page.

The solution should consist of;
 •	Running the test from the maven build tool.
 •	Reports to be pointed out where generated in a readme file included in the project.
 •	Unit framework junit or testNG can be used.
 •	Assertions should be used for verification.

II.	Resources

The program has been developed using Eclipse Java EE IDE for Web Developers version Neon.1a Release (4.6.1)/ Intellij / Netbeans and Selenium WebDriver Language Binding 3.0.1 for Java on windows 8.1. with TestNG framework.

III.	The implementation

The approach

There is only  test case: •	VerifyConversion()

Description of the test case

It access the website and the it performs 5 different validations (using assert as requested) on 5 different element from the main website It tries then to get the conversion from EUR into POUND. The output of this conversion has been “hardcoded” and it is always passing. As it is commented in the code the second parameter should be customized by using the real Pound rate got from an external source at the time that the test case is executed.


we yet ought to find a way how color propagates through generations.
or track all ancestry of individual cells like genetic traits.


import numpy as np
import pandas as pd


typo?
conference_contro_details -> conference_control_details


dfgdfgf


ggfgfgffs


ggsss


I think you're going to want to access db from main class (in case they migrate)


Also,
              `wfrecon = Wavefront(e_field * aperture(pupil_grid), wavelength)`
is the same as one declared in `wf2sense`. So,` wfrecon` is exactly the same as one`wf2sense`. Using reconstructed_phase instead of `wf_phase` should be the correct way. I think I had mentioned that in the email.


again, may wanna `guilds.getDatabase().getChallengeAdapter().createChallenge()`  however maybe this will, too assuming whatever calls this has an always fresh reference to the db


get from main class


`'fetchCurrencies': true` is missing. I think we should add some tests to make sure hard-coded exchange capabilities actually match the implemented capabilities.


This is a very old commit you're looking at ))

The new set of metainfo is here: https://github.com/ccxt/ccxt/blob/master/js/base/Exchange.js#L96


Deployment failed with the following error:

~~~
The property `config.public` in now.json can only be of type `Boolean`.
~~~


Successfully aliased the URL <https://linkmoji-n8lb811du.now.sh> to the following aliases:

* https://linkmoji.retrotechxyz.now.sh
* https://linkmoji-git-master.retrotechxyz.now.sh


1.  Configuration details should be separate (shouldn't be pushed to git)

1. In the case of using default values, the variable name should be present

.


Same issue as mentioned in line #80


Successfully aliased the URL <https://linkmoji-ref2y6wln.now.sh> to the following aliases:

* https://linkmoji.retrotechxyz.now.sh
* https://linkmoji-git-master.retrotechxyz.now.sh


Yes. I've been wondering about only tuning mg values, but i think that
would still have the same problems as most tunes.
One idea is to tune using an average and a gradient instead of mg and eg?
i.e. Score(a+g,a-g) instead of Score(m,e)
If the gradients turned out to be very sensitive (or the opposite) the tune
parameters could be set differently for them, maybe getting a more reliable
result.


If we are using async/await instead of promises, then we should be consistent.


or use decorators to keep the setting together with the functions, like this:

```
@exchangeCapability('emulated')
async fetchCurrencies() {
    // ....
}
```


Successfully aliased the URL <https://weather-app-2-0-1op4qn178.now.sh> to the following aliases:

* https://weather-app-2-0.aleksassincreed.now.sh
* https://weather-app-2-0-git-master.aleksassincreed.now.sh


@omidkrad unfortunately, decorators are harder to transpile to Python and PHP, especially PHP.


kj


Successfully aliased the URL <https://engine262-api-5j8au2x9l.now.sh> to the following aliases:

* https://engine262-api.snek.now.sh
* https://engine262-api-git-master.snek.now.sh


[R/check_chapter_titles.R:15:46:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_chapter_titles.R#L15) *warning:* **Do not use absolute paths.**
```r
    dplyr::mutate(texorpdf = str_detect(X3, "\\\\texorpdf")) %>%
                                             ^~~~~~~~~~~~
```
[R/check_chapter_titles.R:18:92:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_chapter_titles.R#L18) *style:* **Commas should always have a space after.**
```r
                                 str_match(X3, "^\\\\texorpdfstring \\{(.*)\\}\\{.*\\}$")[,2],
                                                                                ^
```
[R/check_chapter_titles.R:25:4:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_chapter_titles.R#L25) *style:* **Commented code should be removed.**
```r
  #chapters = stringr::str_extract(main_tex, "^\\\\chapter\\{")
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/check_chapter_titles.R:26:4:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_chapter_titles.R#L26) *style:* **Commented code should be removed.**
```r
  #main_tex = main_tex[which(!is.na(chapters))]
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/check_section_titles.R:61:3:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_section_titles.R#L61) *warning:* **local variable 'section_nums' assigned but may not be used**
```r
  section_nums = which(tokens$X1 == "section" | tokens$X1 == "subsection")
  ^~~~~~~~~~~~
```
[R/check_section_titles.R:65:46:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_section_titles.R#L65) *warning:* **Do not use absolute paths.**
```r
    dplyr::mutate(texorpdf = str_detect(X3, "\\\\texorpdf")) %>%
                                             ^~~~~~~~~~~~
```
[R/check_section_titles.R:68:92:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_section_titles.R#L68) *style:* **Commas should always have a space after.**
```r
                                 str_match(X3, "^\\\\texorpdfstring \\{(.*)\\}\\{.*\\}$")[,2],
                                                                                ^
```
[R/check_section_titles.R:77:3:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_section_titles.R#L77) *warning:* **local variable 'next_chapter' assigned but may not be used**
```r
  next_chapter = 1
  ^~~~~~~~~~~~
```
[R/check_urls.R:12:32:](https://github.com/jr-packages/jrNotes/blob/7ff3baa57533766740aee0d5f1c7fe5cd41c4f9a/R/check_urls.R#L12) *warning:* **no visible binding for global variable 'X1', Did you mean 'X11'?**
```r
  urls = dplyr::filter(tokens, X1 == "url")$X3
                               ^~
```


I recognize this file is an incomplete draft, and that I may have misunderstood its meaning.  But if I have understood it correctly, the following may help you move forward with completing your thoughts regarding how to accomplish the kind of migrations in CouchDB you have begun to describe here.

It appears to me that this rough complexity analysis may have discouraged you from proceeding with writing this document, because it is precisely at this point that the document ceases to have its more finished form, and transitions to the form of outlines and notes which are intended to be organized into a more well-polished document at some later point in time.  It looks like you stopped writing the document soon after being discouraged by the complexity analysis.  **Is the complexity analysis the sticking point for you?**

If so, this may be good news:  it appears to me this complexity analysis is incorrect, and a more correct complexity analysis could get you un-stuck and permit you to proceed toward creating an excellent write-up about how to handle data migrations in CouchDB.

Here is the key point:  If I understand correctly, it is not necessary to write a migration from version 1 directly to version 3.  Instead, **it is necessary only to write a migration from version 1 directly to version 2, and another migration from version 2 directly to version 3, then use those two migrations together consecutively when you need to migrate from 1 to 3.**  This greatly reduces the migrations' complexity; their complexity becomes **_linear_** instead of **_quadratic_**.

To put this a bit more explicitly, the following migrations would be sufficient:

1 -> 2
2 -> 3

3 -> 2
2 -> 1

The consequence is that only 4 migrations are needed to handle 3 versions.  To handle a fourth version, you only need to add two new migrations:

3 -> 4
4 -> 3

So, only 2 migrations need to be added for each new version.  The number of migrations needed per version increases as follows:

1 version, 0 migrations
2 versions, 2 migrations
3 versions, 4 migrations
4 versions, 6 migrations
5 versions, 8 migrations

So the complexity for `n` versions is `(n*2)-2`, which is linear.

This is the way migrations are handled in some RDBMS ORM migration systems, e.g., https://sqlalchemy-migrate.readthedocs.io/en/latest/ (which is "Inspired by Ruby on Rails' migrations").  Using those systems, here is how a migration works:

1. The data is at schema version 1.
1. The developer wrote the following two migrations:  1 -> 2 and 2 -> 3.
1. The developer issues a command to the migration library to migrate the schema to version 3.
1. The migration library figures out that it needs to run migration 1 -> 2, then 2 -> 3, in that order, and executes those migrations.

Granted, often a developer will only run one migration at a time, but there are situations where it is necessary to run more than one migration at a time, and this is how those situations can be handled with a minimum amount of complexity.

Because of the above reasoning, I think your following statement is not a "necessary" conclusion.  The above method is significantly simpler (it has linear rather than quadratic complexity), and is sufficient to solve the problem.  If that is the case, as I think it is, the sentences quoted below could be deleted, and replaced with something like what I have described above.

```
After the next update to `v3` there are now already *six* transformers necessary to support conversion from every version to every other. In general, from every schema version that has ever existed in the system there may still be some documents around. So if we want to support all app versions we will have to provide as many transformers as there are ordered pairs, meaning $n (n - 1)$ transformers if the current data schema has version `n`. That's $n^2 - n$ - the amount of transformers grows quadratically with the number of supported schema versions!
```

I think you no longer need the bullet point below, and it is not necessary to "drop version support," if by that you mean "give up on trying to write migrations because quadratic complexity is too much to handle."

```
- strategy:
  - drop version support
```


Read Me


Fucking foo


Oh, sorry, I missed the link, thank you!


[R/buildMetadata.R:5:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L5) *style:* **Lines should not be more than 80 characters.**
```r
#' @param isRasterToMatch Logical. Is this(these) layer(s) the \code{rasterToMatch} layers.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:6:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L6) *style:* **Lines should not be more than 80 characters.**
```r
#'        If \code{TRUE}, then this layer can be accessed by \code{rasterToMatch(map)}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:12:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L12) *style:* **Lines should not be more than 80 characters.**
```r
#'  If \code{TRUE} or a character vector, then this layer will be added to a leaflet map.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:13:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L13) *style:* **Lines should not be more than 80 characters.**
```r
#'  For \code{RasterLayer} object, this will trigger a call to \code{gdal2tiles}, making tiles.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:20:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L20) *style:* **Lines should not be more than 80 characters.**
```r
buildMetadata <- function(metadata, isStudyArea, isRasterToMatch, layerName, obj,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:20:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L20) *style:* **Variable or function name should be snake_case.**
```r
buildMetadata <- function(metadata, isStudyArea, isRasterToMatch, layerName, obj,
^~~~~~~~~~~~~
```
[R/buildMetadata.R:20:37:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L20) *style:* **Variable or function name should be snake_case.**
```r
buildMetadata <- function(metadata, isStudyArea, isRasterToMatch, layerName, obj,
                                    ^~~~~~~~~~~
```
[R/buildMetadata.R:20:50:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L20) *style:* **Variable or function name should be snake_case.**
```r
buildMetadata <- function(metadata, isStudyArea, isRasterToMatch, layerName, obj,
                                                 ^~~~~~~~~~~~~~~
```
[R/buildMetadata.R:20:67:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L20) *style:* **Variable or function name should be snake_case.**
```r
buildMetadata <- function(metadata, isStudyArea, isRasterToMatch, layerName, obj,
                                                                  ^~~~~~~~~
```
[R/buildMetadata.R:21:27:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L21) *style:* **Variable or function name should be snake_case.**
```r
                          columnNameForLabels, objHash, leaflet, envir, ...) {
                          ^~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:21:48:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L21) *style:* **Variable or function name should be snake_case.**
```r
                          columnNameForLabels, objHash, leaflet, envir, ...) {
                                               ^~~~~~~
```
[R/buildMetadata.R:22:8:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L22) *warning:* **no visible global function definition for ‘copy’, Did you mean 'coef'?**
```r
  b <- copy(.singleMetadataNAEntry)
       ^~~~
```
[R/buildMetadata.R:22:13:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L22) *warning:* **no visible binding for global variable ‘.singleMetadataNAEntry’**
```r
  b <- copy(.singleMetadataNAEntry)
            ^~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:28:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L28) *style:* **Variable or function name should be snake_case.**
```r
    studyAreaNumber <- 1 + NROW(metadata[compareNA(studyArea, TRUE) |
    ^~~~~~~~~~~~~~~
```
[R/buildMetadata.R:29:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L29) *style:* **Lines should not be more than 80 characters.**
```r
                                               (is.numeric(studyArea) & studyArea > 0)])
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:30:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L30) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
    set(b, NULL, "studyArea", studyAreaNumber)
    ^~~
```
[R/buildMetadata.R:31:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L31) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
    set(b, NULL, "area", area)
    ^~~
```
[R/buildMetadata.R:35:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L35) *style:* **Variable or function name should be snake_case.**
```r
    rasterToMatchNumber <- 1 + NROW(metadata[compareNA(rasterToMatch, TRUE) |
    ^~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:36:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L36) *style:* **Lines should not be more than 80 characters.**
```r
                                           (is.numeric(rasterToMatch) & rasterToMatch > 0)])
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:37:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L37) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
    set(b, NULL, "rasterToMatch", rasterToMatchNumber)
    ^~~
```
[R/buildMetadata.R:43:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L43) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
  set(b, NULL, "layerName", layerName)
  ^~~
```
[R/buildMetadata.R:44:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L44) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
  set(b, NULL, "layerType", class(obj))
  ^~~
```
[R/buildMetadata.R:47:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L47) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
      set(b, NULL, "columnNameForLabels", columnNameForLabels)
      ^~~
```
[R/buildMetadata.R:50:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L50) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
  set(b, NULL, "objectHash", objHash)
  ^~~
```
[R/buildMetadata.R:53:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L53) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
    set(b, NULL, "leaflet", leaflet)
    ^~~
```
[R/buildMetadata.R:55:14:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L55) *warning:* **no visible global function definition for ‘.robustDigest’**
```r
      dig <- .robustDigest(obj)
             ^~~~~~~~~~~~~
```
[R/buildMetadata.R:56:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L56) *style:* **Variable or function name should be snake_case.**
```r
      tilePath <- ifelse(is.na(leaflet), asPath(NA_character_),
      ^~~~~~~~
```
[R/buildMetadata.R:58:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L58) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
      set(b, NULL, "leafletTiles", tilePath)
      ^~~
```
[R/buildMetadata.R:62:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L62) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
  set(b, NULL, "envir", list(list(envir)))
  ^~~
```
[R/buildMetadata.R:66:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L66) *style:* **Lines should not be more than 80 characters.**
```r
    dots <- dots[!unlist(lapply(dots, is.null))] # remove NULL because that isn't added to data.table anyway
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:79:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L79) *style:* **Variable or function name should be snake_case.**
```r
  columnsToAdd <- dots
  ^~~~~~~~~~~~
```
[R/buildMetadata.R:84:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L84) *style:* **Lines should not be more than 80 characters.**
```r
        ## a data.table can't handle all types of objects. need to wrap in a list to stick it there
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:86:9:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L86) *style:* **Variable or function name should be snake_case.**
```r
        needToSet <- TRUE
        ^~~~~~~~~
```
[R/buildMetadata.R:89:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L89) *style:* **Lines should not be more than 80 characters.**
```r
          needToSet <- tryCatch(set(b, NULL, nta, cta), silent = TRUE, error = function(x) TRUE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/buildMetadata.R:89:11:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L89) *style:* **Variable or function name should be snake_case.**
```r
          needToSet <- tryCatch(set(b, NULL, nta, cta), silent = TRUE, error = function(x) TRUE)
          ^~~~~~~~~
```
[R/buildMetadata.R:89:33:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/buildMetadata.R#L89) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
          needToSet <- tryCatch(set(b, NULL, nta, cta), silent = TRUE, error = function(x) TRUE)
                                ^~~
```
[R/GIS.R:7:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L7) *style:* **Lines should not be more than 80 characters.**
```r
#' @return list containing: \code{sizeInHa}, the area; and \code{polyID}, the polygon ID.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/GIS.R:11:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L11) *style:* **Variable or function name should be snake_case.**
```r
areaAndPolyValue <- function(ras) {
^~~~~~~~~~~~~~~~
```
[R/GIS.R:12:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L12) *style:* **Variable or function name should be snake_case.**
```r
  polyIndivSpecies <- gdal_polygonizeR(ras) # 99 seconds with full ras
  ^~~~~~~~~~~~~~~~
```
[R/GIS.R:12:23:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L12) *warning:* **no visible global function definition for ‘gdal_polygonizeR’**
```r
  polyIndivSpecies <- gdal_polygonizeR(ras) # 99 seconds with full ras
                      ^~~~~~~~~~~~~~~~
```
[R/GIS.R:13:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L13) *style:* **Variable or function name should be snake_case.**
```r
  pArea <- as.numeric(sf::st_area(polyIndivSpecies) / 1e4)
  ^~~~~
```
[R/GIS.R:19:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L19) *style:* **Lines should not be more than 80 characters.**
```r
#' Based on \url{https://johnbaumgartner.wordpress.com/2012/07/26/getting-rasters-into-shape-from-r/}.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/GIS.R:33:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L33) *style:* **Variable or function name should be snake_case.**
```r
gdal_polygonizeR <- function(x, outshape = NULL, gdalformat = "ESRI Shapefile",
^~~~~~~~~~~~~~~~
```
[R/GIS.R:48:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L48) *style:* **Lines should not be more than 80 characters.**
```r
  if (!file.exists(pypath)) stop("Can't find gdal_polygonize.py on your system.")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/GIS.R:56:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L56) *style:* **Variable or function name should be snake_case.**
```r
    f.exists <- file.exists(paste(outshape, c("shp", "shx", "dbf"), sep = "."))
    ^~~~~~~~
```
[R/GIS.R:59:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L59) *style:* **Lines should not be more than 80 characters.**
```r
                   toString(paste(outshape, c("shp", "shx", "dbf"), sep = ".")[f.exists])),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/GIS.R:65:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L65) *warning:* **no visible global function definition for ‘writeRaster’**
```r
    writeRaster(x, rastpath, datatype = assessDataType(x))
    ^~~~~~~~~~~
```
[R/GIS.R:65:41:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L65) *warning:* **no visible global function definition for ‘assessDataType’**
```r
    writeRaster(x, rastpath, datatype = assessDataType(x))
                                        ^~~~~~~~~~~~~~
```
[R/GIS.R:73:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L73) *style:* **Lines should not be more than 80 characters.**
```r
    shp <- sf::read_sf(dsn = dirname(outshape), layer = basename(file_path_sans_ext(outshape)))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/GIS.R:73:66:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L73) *warning:* **no visible global function definition for ‘file_path_sans_ext’**
```r
    shp <- sf::read_sf(dsn = dirname(outshape), layer = basename(file_path_sans_ext(outshape)))
                                                                 ^~~~~~~~~~~~~~~~~~
```
[R/GIS.R:74:22:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L74) *warning:* **no visible global function definition for ‘extent’, Did you mean 'extends'?**
```r
    sf::st_bbox(shp, extent(x))
                     ^~~~~~
```
[R/GIS.R:89:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L89) *style:* **Variable or function name should be snake_case.**
```r
.rasterToMemory <- function(x, ...) {
^~~~~~~~~~~~~~~
```
[R/GIS.R:90:8:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L90) *warning:* **no visible global function definition for ‘raster’, Did you mean 'paste'?**
```r
  r <- raster(x, ...)
       ^~~~~~
```
[R/GIS.R:108:24:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L108) *style:* **Variable or function name should be snake_case.**
```r
fasterize2 <- function(emptyRaster, polygonToFasterize, field) {
                       ^~~~~~~~~~~
```
[R/GIS.R:108:37:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L108) *style:* **Variable or function name should be snake_case.**
```r
fasterize2 <- function(emptyRaster, polygonToFasterize, field) {
                                    ^~~~~~~~~~~~~~~~~~
```
[R/GIS.R:109:10:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L109) *warning:* **no visible global function definition for ‘raster’, Did you mean 'paste'?**
```r
  ras <- raster(emptyRaster)
         ^~~~~~
```
[R/GIS.R:111:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L111) *style:* **Lines should not be more than 80 characters.**
```r
    polygonToFasterize <- Cache(cropInputs, polygonToFasterize, rasterToMatch = ras)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/GIS.R:111:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L111) *style:* **Variable or function name should be snake_case.**
```r
    polygonToFasterize <- Cache(cropInputs, polygonToFasterize, rasterToMatch = ras)
    ^~~~~~~~~~~~~~~~~~
```
[R/GIS.R:111:27:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L111) *warning:* **no visible global function definition for ‘Cache’**
```r
    polygonToFasterize <- Cache(cropInputs, polygonToFasterize, rasterToMatch = ras)
                          ^~~~~
```
[R/GIS.R:111:33:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L111) *warning:* **no visible binding for global variable ‘cropInputs’**
```r
    polygonToFasterize <- Cache(cropInputs, polygonToFasterize, rasterToMatch = ras)
                                ^~~~~~~~~~
```
[R/GIS.R:113:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L113) *style:* **Variable or function name should be snake_case.**
```r
  thePoly <- projectInputs(polygonToFasterize, targetCRS = crs(ras))
  ^~~~~~~
```
[R/GIS.R:113:14:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L113) *warning:* **no visible global function definition for ‘projectInputs’**
```r
  thePoly <- projectInputs(polygonToFasterize, targetCRS = crs(ras))
             ^~~~~~~~~~~~~
```
[R/GIS.R:113:60:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L113) *warning:* **no visible global function definition for ‘crs’, Did you mean 'cars'?**
```r
  thePoly <- projectInputs(polygonToFasterize, targetCRS = crs(ras))
                                                           ^~~
```
[R/GIS.R:114:11:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/GIS.R#L114) *style:* **Variable or function name should be snake_case.**
```r
  thePoly$polygonNum <- seq_along(thePoly)
          ^~~~~~~~~~
```
[R/makeTiles.R:1:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L1) *style:* **Variable or function name should be snake_case.**
```r
makeTiles <- function(tilePath, obj) {
^~~~~~~~~
```
[R/makeTiles.R:1:23:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L1) *style:* **Variable or function name should be snake_case.**
```r
makeTiles <- function(tilePath, obj) {
                      ^~~~~~~~
```
[R/makeTiles.R:2:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L2) *style:* **Variable or function name should be snake_case.**
```r
  dirNotExist <- !dir.exists(tilePath)
  ^~~~~~~~~~~
```
[R/makeTiles.R:4:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L4) *style:* **Lines should not be more than 80 characters.**
```r
  if (dirNotExist) { # assume that tilePath is unique for that obj, via .robustDigest
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/makeTiles.R:4:20:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L4) *style:* **Opening curly braces should never go on their own line and should always be followed by a new line.**
```r
  if (dirNotExist) { # assume that tilePath is unique for that obj, via .robustDigest
                   ^
```
[R/makeTiles.R:8:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L8) *style:* **Lines should not be more than 80 characters.**
```r
    objLflt <- try(projectRaster(obj, crs = CRS("+init=epsg:4326")), silent = TRUE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/makeTiles.R:8:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L8) *style:* **Variable or function name should be snake_case.**
```r
    objLflt <- try(projectRaster(obj, crs = CRS("+init=epsg:4326")), silent = TRUE)
    ^~~~~~~
```
[R/makeTiles.R:8:20:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L8) *warning:* **no visible global function definition for ‘projectRaster’**
```r
    objLflt <- try(projectRaster(obj, crs = CRS("+init=epsg:4326")), silent = TRUE)
                   ^~~~~~~~~~~~~
```
[R/makeTiles.R:8:45:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L8) *warning:* **no visible global function definition for ‘CRS’, Did you mean 'C'?**
```r
    objLflt <- try(projectRaster(obj, crs = CRS("+init=epsg:4326")), silent = TRUE)
                                            ^~~
```
[R/makeTiles.R:9:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L9) *style:* **Variable or function name should be snake_case.**
```r
    tmpFile <- tempfile(fileext = ".tif")
    ^~~~~~~
```
[R/makeTiles.R:10:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L10) *style:* **Variable or function name should be snake_case.**
```r
    objLflt <- try(writeRaster(objLflt, tmpFile), silent = TRUE)
    ^~~~~~~
```
[R/makeTiles.R:10:20:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L10) *warning:* **no visible global function definition for ‘writeRaster’**
```r
    objLflt <- try(writeRaster(objLflt, tmpFile), silent = TRUE)
                   ^~~~~~~~~~~
```
[R/makeTiles.R:12:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L12) *style:* **Variable or function name should be snake_case.**
```r
    toDo <- TRUE
    ^~~~
```
[R/makeTiles.R:13:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L13) *style:* **Variable or function name should be snake_case.**
```r
    tryNum <- 1
    ^~~~~~
```
[R/makeTiles.R:16:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L16) *style:* **Lines should not be more than 80 characters.**
```r
      out <- try(tiler::tile(tmpFile, tilePath, zoom = "1-10", crs = CRS("+init=epsg:4326"),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/makeTiles.R:18:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L18) *style:* **Variable or function name should be snake_case.**
```r
      toDo <- is(out, "try-error")
      ^~~~
```
[R/makeTiles.R:22:9:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L22) *style:* **Variable or function name should be snake_case.**
```r
        toDo <- TRUE
        ^~~~
```
[R/makeTiles.R:25:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/makeTiles.R#L25) *style:* **Variable or function name should be snake_case.**
```r
      tryNum <- tryNum + 1
      ^~~~~~
```
[R/map-analysis.R:17:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L17) *style:* **Lines should not be more than 80 characters.**
```r
#'   \code{analysisGroup2} column of the \code{map@@metadata} or a \code{functionName}.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:39:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L39) *style:* **Variable or function name should be snake_case.**
```r
mapAnalysis <- function(map, functionName = NULL, purgeAnalyses = NULL,
^~~~~~~~~~~
```
[R/map-analysis.R:39:30:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L39) *style:* **Variable or function name should be snake_case.**
```r
mapAnalysis <- function(map, functionName = NULL, purgeAnalyses = NULL,
                             ^~~~~~~~~~~~
```
[R/map-analysis.R:39:51:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L39) *style:* **Variable or function name should be snake_case.**
```r
mapAnalysis <- function(map, functionName = NULL, purgeAnalyses = NULL,
                                                  ^~~~~~~~~~~~~
```
[R/map-analysis.R:40:25:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L40) *style:* **Variable or function name should be snake_case.**
```r
                        useParallel = getOption("map.useParallel"), ...) {
                        ^~~~~~~~~~~
```
[R/map-analysis.R:42:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L42) *warning:* **local variable ‘dots’ assigned but may not be used**
```r
  dots <- list(...)
  ^~~~
```
[R/map-analysis.R:54:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L54) *style:* **Variable or function name should be snake_case.**
```r
  AGs <- sort(unique(colnames(m)[startsWith(colnames(m), "analysisGroup")]))
  ^~~
```
[R/map-analysis.R:56:31:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L56) *style:* **Variable or function name should be snake_case.**
```r
  ags <- lapply(AGs, function(AG) sort(na.omit(unique(m[[AG]]))))
                              ^~
```
[R/map-analysis.R:58:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L58) *style:* **Variable or function name should be snake_case.**
```r
  combosCompleted <- lapply(functionName, function(fn)
  ^~~~~~~~~~~~~~~
```
[R/map-analysis.R:60:4:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L60) *style:* **Commented code should be removed.**
```r
  #combosCompleted <- map@analysesData[[functionName]]$.Completed
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:71:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L71) *style:* **Variable or function name should be snake_case.**
```r
  combosAll <- expandAnalysisGroups(ags)
  ^~~~~~~~~
```
[R/map-analysis.R:71:16:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L71) *warning:* **no visible global function definition for ‘expandAnalysisGroups’**
```r
  combosAll <- expandAnalysisGroups(ags)
               ^~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:74:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L74) *style:* **Lines should not be more than 80 characters.**
```r
  # This is only for the first one to do, as it is just finding the columns required
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:76:42:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L76) *style:* **Variable or function name should be snake_case.**
```r
  args1 <- lapply(functionName, function(funName) {
                                         ^~~~~~~
```
[R/map-analysis.R:79:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L79) *style:* **Variable or function name should be snake_case.**
```r
    keepArgs <- unlist(lapply(args, function(arg) length(arg) > 0))
    ^~~~~~~~
```
[R/map-analysis.R:83:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L83) *style:* **Variable or function name should be snake_case.**
```r
  AGsByFunName <- lapply(functionName, function(funName) {
  ^~~~~~~~~~~~
```
[R/map-analysis.R:83:49:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L83) *style:* **Variable or function name should be snake_case.**
```r
  AGsByFunName <- lapply(functionName, function(funName) {
                                                ^~~~~~~
```
[R/map-analysis.R:88:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L88) *style:* **Variable or function name should be snake_case.**
```r
  combosAll <- Map(agsByFunName = AGsByFunName,
  ^~~~~~~~~
```
[R/map-analysis.R:90:29:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L90) *style:* **Variable or function name should be snake_case.**
```r
                   function(agsByFunName, ags) {
                            ^~~~~~~~~~~~
```
[R/map-analysis.R:91:22:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L91) *warning:* **no visible global function definition for ‘expandAnalysisGroups’**
```r
                     expandAnalysisGroups(ags[agsByFunName])
                     ^~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:94:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L94) *style:* **Variable or function name should be snake_case.**
```r
  combosToDo <- Map(cc = combosCompleted, ca = combosAll, function(cc, ca) {
  ^~~~~~~~~~
```
[R/map-analysis.R:96:32:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L96) *style:* **Commas should always have a space after.**
```r
      setDT(ca[!ca$all %in% cc,])
                               ^
```
[R/map-analysis.R:101:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L101) *style:* **Variable or function name should be snake_case.**
```r
  combosToDo <- Map(ctd = combosToDo, fn = functionName,
  ^~~~~~~~~~
```
[R/map-analysis.R:102:45:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L102) *style:* **Variable or function name should be snake_case.**
```r
                    function(ctd, fn) ctd[, functionName := fn])
                                            ^~~~~~~~~~~~
```
[R/map-analysis.R:103:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L103) *style:* **Variable or function name should be snake_case.**
```r
  combosToDoDT <- rbindlist(combosToDo)
  ^~~~~~~~~~~~
```
[R/map-analysis.R:103:19:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L103) *warning:* **no visible global function definition for ‘rbindlist’**
```r
  combosToDoDT <- rbindlist(combosToDo)
                  ^~~~~~~~~
```
[R/map-analysis.R:105:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L105) *style:* **Lines should not be more than 80 characters.**
```r
  combosToDo <- combosToDo[!unlist(lapply(combosToDo, function(ctd) NROW(ctd) == 0))]
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:105:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L105) *style:* **Variable or function name should be snake_case.**
```r
  combosToDo <- combosToDo[!unlist(lapply(combosToDo, function(ctd) NROW(ctd) == 0))]
  ^~~~~~~~~~
```
[R/map-analysis.R:108:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L108) *style:* **Variable or function name should be snake_case.**
```r
    funNames <- unique(combosToDoDT$functionName)
    ^~~~~~~~
```
[R/map-analysis.R:111:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L111) *style:* **Variable or function name should be snake_case.**
```r
    otherFormalsInFunction <- lapply(funNames, function(funName) {
    ^~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:111:57:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L111) *style:* **Variable or function name should be snake_case.**
```r
    otherFormalsInFunction <- lapply(funNames, function(funName) {
                                                        ^~~~~~~
```
[R/map-analysis.R:112:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L112) *style:* **Variable or function name should be snake_case.**
```r
      otherFormalsInFunction <- formalArgs(funName)[formalArgs(funName) %in%
      ^~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:125:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L125) *style:* **Commented code should be removed.**
```r
    # browser()
      ^~~~~~~~~
```
[R/map-analysis.R:126:11:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L126) *warning:* **no visible global function definition for ‘makeOptimalCluster’**
```r
    cl <- makeOptimalCluster(useParallel, maxNumClusters = NROW(combosToDoDT))
          ^~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:127:17:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L127) *warning:* **no visible global function definition for ‘stopCluster’**
```r
    on.exit(try(stopCluster(cl), silent = TRUE))
                ^~~~~~~~~~~
```
[R/map-analysis.R:129:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L129) *style:* **Variable or function name should be snake_case.**
```r
    combosToDoList <- split(combosToDoDT, combosToDoDT$all)
    ^~~~~~~~~~~~~~
```
[R/map-analysis.R:132:20:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L132) *style:* **Variable or function name should be snake_case.**
```r
                   funName <- combo$functionName
                   ^~~~~~~
```
[R/map-analysis.R:134:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L134) *style:* **Lines should not be more than 80 characters.**
```r
                                                   combo = combo, AGs = AGs, funName = funName)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:137:20:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L137) *style:* **Variable or function name should be snake_case.**
```r
                   fnOut <- do.call(Cache,
                   ^~~~~
```
[R/map-analysis.R:140:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L140) *style:* **Lines should not be more than 80 characters.**
```r
                                                         otherFormalsInFunction[[funName]])))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:145:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L145) *style:* **Variable or function name should be snake_case.**
```r
      fromFunName <- combosToDoDT$functionName == funName
      ^~~~~~~~~~~
```
[R/map-analysis.R:147:35:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L147) *style:* **Variable or function name should be snake_case.**
```r
      map@analysesData[[funName]]$.Completed <- names(out3[fromFunName])
                                  ^~~~~~~~~~
```
[R/map-analysis.R:150:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L150) *style:* **Lines should not be more than 80 characters.**
```r
    message("  ", paste(functionName, collapse = ", "), " already run on all layers")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:168:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L168) *style:* **Variable or function name should be snake_case.**
```r
mapAddAnalysis <- function(map, functionName,
^~~~~~~~~~~~~~
```
[R/map-analysis.R:168:33:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L168) *style:* **Variable or function name should be snake_case.**
```r
mapAddAnalysis <- function(map, functionName,
                                ^~~~~~~~~~~~
```
[R/map-analysis.R:169:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L169) *style:* **Lines should not be more than 80 characters.**
```r
                           useParallel = getOption("map.useParallel", FALSE), ...) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:169:28:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L169) *style:* **Variable or function name should be snake_case.**
```r
                           useParallel = getOption("map.useParallel", FALSE), ...) {
                           ^~~~~~~~~~~
```
[R/map-analysis.R:171:8:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L171) *warning:* **no visible global function definition for ‘data.table’**
```r
  b <- data.table(functionName = functionName, t(dots))
       ^~~~~~~~~~
```
[R/map-analysis.R:172:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L172) *style:* **Variable or function name should be snake_case.**
```r
  prevEntry <- map@analyses$functionName == functionName
  ^~~~~~~~~
```
[R/map-analysis.R:173:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L173) *style:* **Variable or function name should be snake_case.**
```r
  purgeAnalyses <- NULL # Set default as NULL
  ^~~~~~~~~~~~~
```
[R/map-analysis.R:174:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L174) *style:* **Variable or function name should be snake_case.**
```r
  newDigest <- fastdigest::fastdigest(
  ^~~~~~~~~
```
[R/map-analysis.R:178:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L178) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
  set(b, NULL, "argHash", newDigest)
  ^~~
```
[R/map-analysis.R:179:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L179) *style:* **Variable or function name should be snake_case.**
```r
  doRbindlist <- TRUE
  ^~~~~~~~~~~
```
[R/map-analysis.R:182:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L182) *style:* **Lines should not be more than 80 characters.**
```r
      message("An analysis called ", functionName, " already added to map obj; ",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:184:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L184) *style:* **Variable or function name should be snake_case.**
```r
      purgeAnalyses <- functionName
      ^~~~~~~~~~~~~
```
[R/map-analysis.R:187:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L187) *style:* **Variable or function name should be snake_case.**
```r
      doRbindlist <- FALSE
      ^~~~~~~~~~~
```
[R/map-analysis.R:188:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L188) *style:* **Lines should not be more than 80 characters.**
```r
      message("An analysis called ", functionName, " with identical function and ",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:194:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L194) *style:* **Lines should not be more than 80 characters.**
```r
    map@analyses <- rbindlist(list(map@analyses, b), fill = TRUE, use.names = TRUE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:196:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L196) *style:* **Lines should not be more than 80 characters.**
```r
  map <- runMapAnalyses(map = map, purgeAnalyses = purgeAnalyses, useParallel = useParallel)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:196:10:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L196) *warning:* **no visible global function definition for ‘runMapAnalyses’**
```r
  map <- runMapAnalyses(map = map, purgeAnalyses = purgeAnalyses, useParallel = useParallel)
         ^~~~~~~~~~~~~~
```
[R/map-analysis.R:210:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L210) *style:* **Lines should not be more than 80 characters.**
```r
#'   \code{analysisGroups} i.e., \code{"analysisGroup1"} or \code{"analysisGroup2"}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:223:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L223) *style:* **Lines should not be more than 80 characters.**
```r
mapAddPostHocAnalysis <- function(map, functionName, postHocAnalysisGroups = NULL,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:223:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L223) *style:* **Variable or function name should be snake_case.**
```r
mapAddPostHocAnalysis <- function(map, functionName, postHocAnalysisGroups = NULL,
^~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:223:40:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L223) *style:* **Variable or function name should be snake_case.**
```r
mapAddPostHocAnalysis <- function(map, functionName, postHocAnalysisGroups = NULL,
                                       ^~~~~~~~~~~~
```
[R/map-analysis.R:223:54:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L223) *style:* **Variable or function name should be snake_case.**
```r
mapAddPostHocAnalysis <- function(map, functionName, postHocAnalysisGroups = NULL,
                                                     ^~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:224:35:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L224) *style:* **Variable or function name should be snake_case.**
```r
                                  postHocAnalyses = "all",
                                  ^~~~~~~~~~~~~~~
```
[R/map-analysis.R:225:35:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L225) *style:* **Variable or function name should be snake_case.**
```r
                                  useParallel = getOption("map.useParallel"),
                                  ^~~~~~~~~~~
```
[R/map-analysis.R:230:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L230) *style:* **Lines should not be more than 80 characters.**
```r
    stop("postHocAnalysisGroups cannot be NULL. It should be one of the column names ",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:232:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L232) *style:* **Lines should not be more than 80 characters.**
```r
  b <- data.table(functionName = functionName, postHocAnalysisGroups = postHocAnalysisGroups,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:235:10:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L235) *warning:* **no visible global function definition for ‘data.table’**
```r
    b <- data.table(b, t(dots))
         ^~~~~~~~~~
```
[R/map-analysis.R:237:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L237) *style:* **Variable or function name should be snake_case.**
```r
  prevEntry <- map@analyses$functionName == functionName
  ^~~~~~~~~
```
[R/map-analysis.R:238:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L238) *style:* **Variable or function name should be snake_case.**
```r
  purgeAnalyses <- NULL # Set default as NULL
  ^~~~~~~~~~~~~
```
[R/map-analysis.R:239:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L239) *style:* **Variable or function name should be snake_case.**
```r
  newDigest <- fastdigest::fastdigest(
  ^~~~~~~~~
```
[R/map-analysis.R:243:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L243) *warning:* **no visible global function definition for ‘set’, Did you mean 'det'?**
```r
  set(b, NULL, "argHash", newDigest)
  ^~~
```
[R/map-analysis.R:244:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L244) *style:* **Variable or function name should be snake_case.**
```r
  doRbindlist <- TRUE
  ^~~~~~~~~~~
```
[R/map-analysis.R:247:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L247) *style:* **Lines should not be more than 80 characters.**
```r
      message("An analysis called ", functionName, " already added to map obj; ",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:249:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L249) *style:* **Variable or function name should be snake_case.**
```r
      purgeAnalyses <- functionName
      ^~~~~~~~~~~~~
```
[R/map-analysis.R:252:7:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L252) *style:* **Variable or function name should be snake_case.**
```r
      doRbindlist <- FALSE
      ^~~~~~~~~~~
```
[R/map-analysis.R:253:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L253) *style:* **Lines should not be more than 80 characters.**
```r
      message("An analysis called, ", functionName, " with identical function and ",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:259:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L259) *style:* **Lines should not be more than 80 characters.**
```r
    map@analyses <- rbindlist(list(map@analyses, b), fill = TRUE, use.names = TRUE)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:261:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L261) *style:* **Lines should not be more than 80 characters.**
```r
  map <- runMapAnalyses(map = map, purgeAnalyses = purgeAnalyses, useParallel = useParallel)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:261:10:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L261) *warning:* **no visible global function definition for ‘runMapAnalyses’**
```r
  map <- runMapAnalyses(map = map, purgeAnalyses = purgeAnalyses, useParallel = useParallel)
         ^~~~~~~~~~~~~~
```
[R/map-analysis.R:266:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L266) *style:* **Variable or function name should be snake_case.**
```r
runMapAnalyses <- function(map, purgeAnalyses = NULL,
^~~~~~~~~~~~~~
```
[R/map-analysis.R:266:33:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L266) *style:* **Variable or function name should be snake_case.**
```r
runMapAnalyses <- function(map, purgeAnalyses = NULL,
                                ^~~~~~~~~~~~~
```
[R/map-analysis.R:267:28:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L267) *style:* **Variable or function name should be snake_case.**
```r
                           useParallel = getOption("map.useParallel")) {
                           ^~~~~~~~~~~
```
[R/map-analysis.R:268:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L268) *style:* **Variable or function name should be snake_case.**
```r
  isPostHoc <- if (is.null(map@analyses$postHoc)) {
  ^~~~~~~~~
```
[R/map-analysis.R:271:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L271) *warning:* **no visible global function definition for ‘compareNA’**
```r
    compareNA(map@analyses$postHoc, TRUE)
    ^~~~~~~~~
```
[R/map-analysis.R:276:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L276) *style:* **Variable or function name should be snake_case.**
```r
    funName <- map@analyses$functionName[!isPostHoc]
    ^~~~~~~
```
[R/map-analysis.R:277:12:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L277) *warning:* **no visible global function definition for ‘mapAnalysis’**
```r
    map <- mapAnalysis(map, funName, purgeAnalyses = purgeAnalyses)
           ^~~~~~~~~~~
```
[R/map-analysis.R:287:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L287) *style:* **Lines should not be more than 80 characters.**
```r
           forms <- forms[!forms %in% c("map", "functionName", "analysisGroups")]
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:298:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L298) *style:* **Lines should not be more than 80 characters.**
```r
                                                            analysisGroups = x$postHocAnalysisGroups),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:299:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L299) *style:* **Lines should not be more than 80 characters.**
```r
                                                       unlist(as.list(x[ , forms, with = FALSE]))))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:299:73:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L299) *style:* **Do not place spaces around code in parentheses or square brackets.**
```r
                                                       unlist(as.list(x[ , forms, with = FALSE]))))
                                                                        ^
```
[R/map-analysis.R:299:74:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L299) *style:* **Commas should never have a space before.**
```r
                                                       unlist(as.list(x[ , forms, with = FALSE]))))
                                                                        ~^
```
[R/map-analysis.R:313:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L313) *style:* **Variable or function name should be snake_case.**
```r
getFormalsFromMetadata <- function(metadata, combo, AGs, funName) {
^~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:313:53:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L313) *style:* **Variable or function name should be snake_case.**
```r
getFormalsFromMetadata <- function(metadata, combo, AGs, funName) {
                                                    ^~~
```
[R/map-analysis.R:313:58:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L313) *style:* **Variable or function name should be snake_case.**
```r
getFormalsFromMetadata <- function(metadata, combo, AGs, funName) {
                                                         ^~~~~~~
```
[R/map-analysis.R:314:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L314) *style:* **Lines should not be more than 80 characters.**
```r
  formalsInFunction <- formalArgs(funName)[formalArgs(funName) %in% colnames(metadata)]
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:314:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L314) *style:* **Variable or function name should be snake_case.**
```r
  formalsInFunction <- formalArgs(funName)[formalArgs(funName) %in% colnames(metadata)]
  ^~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:316:32:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L316) *style:* **Variable or function name should be snake_case.**
```r
  args <- lapply(AGs, function(AG) {
                               ^~
```
[R/map-analysis.R:330:4:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L330) *style:* **Commented code should be removed.**
```r
  #args <- unlist(unname(args), recursive = FALSE)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:335:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L335) *style:* **Variable or function name should be snake_case.**
```r
expandAnalysisGroups <- function(ags) {
^~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:336:3:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L336) *style:* **Variable or function name should be snake_case.**
```r
  combosAll <- NULL
  ^~~~~~~~~
```
[R/map-analysis.R:338:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L338) *style:* **Lines should not be more than 80 characters.**
```r
    combosAll <- do.call(expand.grid, args = append(list(stringsAsFactors = FALSE),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-analysis.R:338:5:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-analysis.R#L338) *style:* **Variable or function name should be snake_case.**
```r
    combosAll <- do.call(expand.grid, args = append(list(stringsAsFactors = FALSE),
    ^~~~~~~~~
```
[R/map-class.R:6:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L6) *style:* **Lines should not be more than 80 characters.**
```r
#' @slot metadata  \code{data.table} with columns describing metadata of map objects in
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:9:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L9) *style:* **Lines should not be more than 80 characters.**
```r
#' @slot .xData Named environment of map-type objects (e.g., \code{sf}, \code{Raster*},
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:10:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L10) *style:* **Lines should not be more than 80 characters.**
```r
#'            \code{Spatial*}. Each entry may also be simply an environment, which
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:11:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L11) *style:* **Lines should not be more than 80 characters.**
```r
#'            indicates where to find the object, i.e., via \code{get(layerName, envir = environment)}
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:15:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L15) *style:* **Lines should not be more than 80 characters.**
```r
#' @slot paths File paths. A named list of paths. The default is a list of length 2,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:18:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L18) *style:* **Lines should not be more than 80 characters.**
```r
#' @slot analyses    A \code{data.table} or \code{data.frame} of the types of analyses to perform.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:20:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L20) *style:* **Lines should not be more than 80 characters.**
```r
#' @slot analysesData A \code{data.table} or \code{data.frame} of the results of the analyses.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:41:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L41) *style:* **Lines should not be more than 80 characters.**
```r
  #             c(layerName = "character", layerType = "character", columnNameForLabels = "character",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:42:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L42) *style:* **Lines should not be more than 80 characters.**
```r
  #               leaflet = "character", studyArea = "numeric", rasterToMatch = "logical"))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:47:20:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L47) *style:* **Variable or function name should be snake_case.**
```r
          function(.Object, ...) {
                   ^~~~~~~
```
[R/map-class.R:48:13:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L48) *style:* **Variable or function name should be snake_case.**
```r
            .Object <- callNextMethod()
            ^~~~~~~
```
[R/map-class.R:49:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L49) *style:* **Lines should not be more than 80 characters.**
```r
            .Object@metadata <- data.table(layerName = character(), layerType = character(),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:52:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L52) *style:* **Lines should not be more than 80 characters.**
```r
                                           studyArea = numeric(), rasterToMatch = logical())
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map-class.R:54:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map-class.R#L54) *style:* **Lines should not be more than 80 characters.**
```r
            .Object@analyses <- data.table::data.table(functionName = character())#, quotedFn = character())
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map.R:2:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map.R#L2) *style:* **Lines should not be more than 80 characters.**
```r
  utils::globalVariables(c(".", ":=", ".I", ".N", ".SD", "envir", "layerName", "objectHash"))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map.R:17:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map.R#L17) *style:* **Lines should not be more than 80 characters.**
```r
#' @param layerName Required. A label for this map layer. This can be the same as
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map.R:26:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map.R#L26) *style:* **Lines should not be more than 80 characters.**
```r
#'  If \code{TRUE} or a character vector, then this layer will be added to a leaflet map.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map.R:27:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map.R#L27) *style:* **Lines should not be more than 80 characters.**
```r
#'  For \code{RasterLayer} object, this will trigger a call to \code{gdal2tiles}, making tiles.
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
[R/map.R:69:1:](https://github.com/PredictiveEcology/map/blob/836d79bbcbf04f487bc1fd2164ce79efde9e4168/R/map.R#L69) *style:* **Lines should not be more than 80 characters.**
```r
#'                layerName = "Smaller Study Area") # adds a second studyArea within 1st
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```


There is no nesting when excluding ranges, which could be pretty confusing. Maybe there should be a warning in your example that the second `end-exclude` is unmatched and ignored.


I rather have a clear API and have people use it correctly :)