ropensci / rcites Goto Github PK
View Code? Open in Web Editor NEW:package: R package to access the CITES Speciesplus database
Home Page: https://docs.ropensci.org/rcites
License: Other
:package: R package to access the CITES Speciesplus database
Home Page: https://docs.ropensci.org/rcites
License: Other
Hi developers,
sometimes some species have a wrong and correct appendix value returned, like in the example bellow.
I did not identify any pattern in this kind of error.
Cheers!
Fred
sppplus_taxonconcept(key, query = "Amazilia versicolor")
1 3210 Amazilia versicolor II
2 65789 Amazilia versicolor NA
sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)
Matrix products: default
locale:
[1] LC_COLLATE=Portuguese_Brazil.1252 LC_CTYPE=Portuguese_Brazil.1252
[3] LC_MONETARY=Portuguese_Brazil.1252 LC_NUMERIC=C
[5] LC_TIME=Portuguese_Brazil.1252
attached base packages:
[1] tcltk stats graphics grDevices utils datasets methods base
other attached packages:
[1] devtools_1.13.4 citesr_0.0.1
loaded via a namespace (and not attached):
[1] compiler_3.4.2 tools_3.4.2 withr_2.1.1 RCurl_1.95-4.10 memoise_1.1.0
[6] digest_0.6.12 bitops_1.0-6 XML_3.98-1.9
I was testing the packages using a few species native to Sri Lanka and I consistently ran into the same issue. It appears that when a species is endemic to a single region, 'rcites::spp_distributions' doesn't return a valid value.
I've illustrated the issue below.
If we take the 'Red Slender Loris' (Loris tardigradus), a Loris species native to the rainforests of Sri Lanka and try to get it's distribution, the package throws an error.
library(rcites)
rcites::set_token("YOUR_TOKEN")
# Check for the Sri Lankan Slender Loris
loris <- rcites::spp_taxonconcept("Loris tardigradus")
# Get the species ID
loris_id <- loris$all_id$id
# Get the species distribution
loris_distribution <- rcites::spp_distributions(taxon_id=loris_id)
The error is as follows
Error in apply(tmp[, !colnames(tmp) %in% c("tags", "references")], 2, : dim(X) must have a positive length
However, if we take the Asian Elephant (Elephas maximus), which is found across several Asian regions, there is no such error.
elephant <- rcites::spp_taxonconcept("Elephas maximus")
elephant_id <- elephant$all_id$id
elephant_distribution <- rcites::spp_distributions(taxon=elephant_id)
Thank you for your time. I hope this issue is solvable or I made an honest mistake.
@ibartomeus started this https://docs.google.com/document/d/1ddyBaaSl8Q20tcjpTYMgAAUT7TP9LMRZgDNugC4ierM/edit?usp=sharing
I thought I'd be clearer to have a separate issue for this :)
─ Session info ───────────────────────────────────────────
setting value
version R version 3.6.0 (2019-04-26)
os macOS Mojave 10.14.6
system x86_64, darwin15.6.0
ui RStudio
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz America/New_York
date 2019-10-07
─ Packages ───────────────────────────────────────────
package * version date lib source
assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.0)
backports 1.1.4 2019-04-10 [1] CRAN (R 3.6.0)
callr 3.3.1 2019-07-18 [1] CRAN (R 3.6.0)
cli 1.1.0 2019-03-19 [1] CRAN (R 3.6.0)
crayon 1.3.4 2017-09-16 [1] CRAN (R 3.6.0)
curl 4.2 2019-09-24 [1] CRAN (R 3.6.0)
desc 1.2.0 2018-05-01 [1] CRAN (R 3.6.0)
devtools 2.1.0 2019-07-06 [1] CRAN (R 3.6.0)
digest 0.6.20 2019-07-04 [1] CRAN (R 3.6.0)
fs 1.3.1 2019-05-06 [1] CRAN (R 3.6.0)
glue 1.3.1 2019-03-12 [1] CRAN (R 3.6.0)
magrittr 1.5 2014-11-22 [1] CRAN (R 3.6.0)
memoise 1.1.0 2017-04-21 [1] CRAN (R 3.6.0)
pkgbuild 1.0.3 2019-03-20 [1] CRAN (R 3.6.0)
pkgload 1.0.2 2018-10-29 [1] CRAN (R 3.6.0)
prettyunits 1.0.2 2015-07-13 [1] CRAN (R 3.6.0)
processx 3.4.1 2019-07-18 [1] CRAN (R 3.6.0)
ps 1.3.0 2018-12-21 [1] CRAN (R 3.6.0)
R6 2.4.0 2019-02-14 [1] CRAN (R 3.6.0)
rcites * 1.0.1 2019-10-07 [1] Github (ropensci/rcites@85bead4)
Rcpp 1.0.2 2019-07-25 [1] CRAN (R 3.6.0)
remotes 2.1.0 2019-06-24 [1] CRAN (R 3.6.0)
rlang 0.4.0 2019-06-25 [1] CRAN (R 3.6.0)
rprojroot 1.3-2 2018-01-03 [1] CRAN (R 3.6.0)
rstudioapi 0.10 2019-03-19 [1] CRAN (R 3.6.0)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.0)
testthat 2.2.0 2019-07-22 [1] CRAN (R 3.6.0)
usethis 1.5.1 2019-07-04 [1] CRAN (R 3.6.0)
withr 2.1.2 2018-03-15 [1] CRAN (R 3.6.0)
[1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library
It seems spp_cites_legislation()
fails to return clean output with a list of three data frames if the user selects a taxon for which there is no CITES listing information. This problem may be related to #42 and appears to involve the coercion to the spp_cites_leg
object class. Invoking the raw = TRUE
option succeeds, however, and the resulting list just contains an empty slot for cites_listing
. See my reproducible example:
library(rcites)
# Failure to return clean list of data frames if there is no CITES listing
res <- spp_cites_legislation(taxon_id = "8094", scope = "all")
# Successful return of list object with the raw data format
res_raw <- spp_cites_legislation(taxon_id = "8094", scope = "all", raw = TRUE)
# The "cites_listings" slot is there but empty
res_raw$cites_listings
This need to be reviewed following best practice, see https://stackoverflow.com/questions/36699272/why-is-message-a-better-choice-than-print-in-r-for-writing-a-package
After renaming the function prefixes, something still doesnt work. Double checked all files, so I guess there needs to be run something so the automatically created files get updated (roxygen?!).
Further, I notices that we have two .Rproj files. one older one citesr
and the new rcites
. can the old one be deleted? (for cleaning up purposes)
Hi there,
you guys quickly want to proof-read? As far as I see, it's all fine.
https://github.com/openjournals/joss-papers/blob/joss.01090/joss.01090/10.21105.joss.01090.pdf
@KevCaz I just saw you changed the emails. I think we should adapt the author roles instead ... me as author (as I wrote most of the code) and you as maintainer (as you did and are doing most technical stuff).
further, in case its still possible to change this, I worked on the logo a bit more:
rcites_logo.zip
I just precompute vignettes which fix some issue (#58). But now I have some issue with don't run example at least on macOS cause http requests are failing. Need to avoid testing \donttest
example for the time being, see r-lib/devtools#2216.
I added the R citation to the ms, but I can't edit the .bib, can you please add this and re-knit the .md? Thanks!
Do you think is a good idea to add a token to the readme? My understanding is that those should be personal. Hence, I would remove it from there and add a link to get your own token.
Hi there,
I now added the scope=
and language=
parameters to spp_cites_legislation()
and spp_eu_legislation()
, as well as the language=
parameter to spp_distribution()
.
Can you please test and check for functionality. thanks.
Dear @JonasGeschke, @KevCaz, @basil-yakimov, @tdjames1, @susanjarvis501, @mbhleduc, and @JonathanGoldenberg.
Thanks to a big push from Kevin and Jonas, we finalized the R package citesR. We plan to submit it to JOSS soon. As you all participated in the hackathon, we would like to be inclusive and fair in the co-authorship and list all relevant contributions.
Please, let us know how would you like to be acknowledged. I think the right move would be to list you in the R package as contributors (according to the package author role definitions: "ctb" (Contributor): Authors who have made smaller contributions.), but please, let us know if any of you made substantial contributions in early stages (I don't remember who did what, to be honest, so speak up!), in which case we should list you as Authors ("aut" (Author): Full authors who have made substantial contributions to the package).
As for the paper authorship, if you want to contribute, please edit the paper.md file with your inputs asap.
Please, answer in this issue before end of July.
Best,
Nacho, Jonas and Kevin.
In our communication era I think would be great to have a logo/sticker. Nowadays, R community tend to mostly use hexagon logos, see http://hexb.in/ and the specification here https://github.com/terinjokes/StickersStandard.
Anyone interested in designing the logo of our package?
As I'm completing the first CRAN submission, I'd like to add a couple of notes to make your live easier if you (@JonasGeschke or @ibartomeus ) take care of future submissions:
make sure everything is OK (we did so this morning),
edit r-cran-comments.md
to explain what you did,
use the win builder https://win-builder.r-project.org/ (devtools::build_win()
), which allows you to check the package on window, an email will be sent to the maintainer (I guess @JonasGeschke you've already received two of those!), note that we are currently using Travis and Appveyor and doing a good job regarding the testing of the package.
As usual Hadley Wickham did a great job explaining everything: http://r-pkgs.had.co.nz/release.html
Currently most of the functions use the flexibility of matrix/data.frame/data.table and store information as lists. This is very useful for us to make the code short, this may however bewilder some users.
What we could do is to add an argument simplify
so the data.tables we output have columns that are not lists when it is possible. What do you think?
Maybe related to this r-lib/actions#386 will try the patch porposed here gaborcsardi/tune@d41e2ec
Currently we use sppplus
as a suffix for function. I do not recall why there are 3 p?
Should we rather use spplus
?
To keep the package as light as possible, I would recommend to use rworldmap
in a vignette but not in the package. Just a thought.
It is a good practice, plus, currently, this causes several deployment issues
[preparation for submission, see details here]
What does this package do? (explain in 50 words or less):
With rcites we provide an R client to access to the Speciesplus database. We provide functions to 1. access the Speciesplus taxon concept, and thereafter 2. get a species' legislation status, both from CITES and from the European Union, 3. get a species' country-wise distribution range, as listed in Speciesplus, and 4. get the references on which a Speciesplus listing is based.
Paste the full DESCRIPTION file inside a code block below:
Package: rcites
Type: Package
Title: R Interface to the Species+ Database
Version: 0.1.0
Authors@R: c(person("Jonas", "Geschke", role = c("aut"), email = "[email protected]", comment = c(ORCID = "0000-0002-5654-9313")),
person("Kevin", "Cazelles", role = c("aut", "cre"), email = "[email protected]", comment = c(ORCID = "0000-0001-6619-9874")),
person("Ignasi", "Bartomeus", role = c("aut"), comment = c(ORCID = "0000-0001-7893-4389")),
person("Jonathan", "Goldenberg", role = c("ctb")),
person("Marie-Bé", "Leduc", role = c("ctb")),
person("Yasmine", "Verzelen", role = c("ctb")))
Description: A programmatic interface to the Species+ <https://speciesplus.net/> database via the Species+/CITES Checklist API <https://api.speciesplus.net/>.
URL: https://ibartomeus.github.io/rcites/, https://github.com/ibartomeus/rcites
BugReports: https://github.com/ibartomeus/rcites/issues
License: MIT + file LICENSE
Depends:
R (>= 3.1.0)
Imports:
httr,
data.table,
methods
Encoding: UTF-8
RoxygenNote: 6.0.1
Suggests: knitr, rmarkdown, testthat, rworldmap
VignetteBuilder: knitr
URL for the package (the development repository, not a stylized html page):
https://github.com/ibartomeus/rcites
Please indicate which category or categories from our package fit policies this package falls under *and why(? (e.g., data retrieval, reproducibility. If you are unsure, we suggest you make a pre-submission inquiry.):
Database access, because the package gives access to the Species+/CITES Checklist API
Who is the target audience and what are scientific applications of this package?
Researchers and national authorities
Are there other R packages that accomplish the same thing? If so, how does
yours differ or meet our criteria for best-in-category?
No
If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted.
Confirm each of the following by checking the box. This package:
paper.md
matching JOSS's requirements with a high-level description in the package root or in inst/
. Does R CMD check
(or devtools::check()
) succeed? Paste and describe any errors or warnings:
Does the package conform to rOpenSci packaging guidelines? Please describe any exceptions:
If this is a resubmission following rejection, please explain the change in circumstances:
If possible, please provide recommendations of reviewers - those with experience with similar packages and/or likely users of your package - and their GitHub user names:
https://github.com/karthik
https://github.com/geanders
Following the discussion #49, an argument pause
may be useful to avoid 404 (or worst 403) errors when information for multiple taxa are requested.
Hi @KevCaz, besides the CBD COP-14 I just did a request of all Speciesplus taxon identifiers. Unfortunately, an error popped up, which we should have a look at.
reprex
R> res <- spp_cites_legislation(taxon_id = c("8094"))
should return
R> res
── Cites listings ($cites_listings): ────────────────────────────────────────────────────────────────
# A tibble: 0 × 0
── Cites quotas ($cites_quotas): ────────────────────────────────────────────────────────────────────
# A tibble: 0 × 0
── Cites suspensions ($cites_suspensions): ──────────────────────────────────────────────────────────
# A tibble: 3 × 8
id taxon_concept_id start_date is_current applies_to_import geo_entity.iso_code2 geo_entity.name
<chr> <chr> <chr> <lgl> <lgl> <chr> <chr>
1 15839 23 2010-11-29 TRUE FALSE PH Philippines
2 15978 NA 2010-11-29 TRUE FALSE PH Philippines
3 22920 NA 2018-03-26 TRUE FALSE IN India
# … with 1 more variable: geo_entity.type <chr>
Field(s) not printed: notes, start_notification.name, start_notification.date, start_notification.url
which does not seem related to 8094
As mentioned by Noam here:
I see that when the results from vectorized calls are combined into aggregated data frames, the tibble classes are dropped. I think this should be a quick fix to rcites_combine_lists()
I am currently not able to test updated_since
because of a mismatch between the request and what's recorded
request:
https://api.speciesplus.net/api/v1/taxon_concepts.json?updated_since=2018-01-01T00%3A00%3A00&page=1&per_page=500
and the cassette:
https://api.speciesplus.net/api/v1/taxon_concepts.json?updated_since=2018-01-01T00:00:00&page=1&per_page=500
One possible way around is to use utils::encodeURL()
Now that codecov is added, we should use improve the code coverage, i.e. we should implement tests in the test
folder (see http://r-pkgs.had.co.nz/tests.html).
I may be tricky as we need a token to perform most of the tests (making this issue related to #9).
Hi @KevCaz, depending on how you are going with adaptions to spp_taxonconcept
, we could further consider to add more parameters to the function. The API provides quite a few, but for the start I would think with_descendants
and again language
could be quite handy ones. right now the function is based on name
only.
So far, we've used an explicit variable token
and expect the user to go on the website to get his own authentication token (fairly doable). I however think there is a better way to proceed:
https://cran.r-project.org/web/packages/httr/vignettes/secrets.html
https://cran.r-project.org/web/packages/googlesheets/vignettes/managing-auth-tokens.html
I'd like to spend some time to look at the above links and see what I can do. Advice / help are welcome!
Hi,
I'm almost done with the first version of the package. I think it should be released under 0.2.0 so versions 0.1.X refer to the first era of the development. You may or may not be familiar with semantic versioning so here is a very helpful link https://semver.org/. I propose we keep using 0.1.X until there is a change in the checklist API. Alternatively we could use 1.X.X so the first number refers to the version of the Checklist API (in which case versions 0.X.X would refer to early development stages).
Also, we may want to add a 4th number to indicate whether or not it is a development version. For instance, let say 1.1.1 is on CRAN, then we use 1.1.1.900 for the development version, switch to 1.1.2 for the new release and once the release done we then name the dev version 1.1.2.900.
Let me know what do you think so I properly tag the first version!
spp_cites_legislation() generates HTTP 404 errors when trying to fetch multiple taxon id's. The error appears at different times when trying to reproduce it. Sometimes the error appears after 6 taxon id's whereas the next time it might be after 16 taxon id's. I have been able to successfully run the code below until mid November 2019. A reproducible example:
# load library
library(rcites)
# object with multiple taxon id's
taxonid <- c("11007", "3576", "7074", "4824", "5865",
"12290", "8816", "8876", "10073", "5276", "12244", "9253",
"30606", "10652", "10505", "7211", "6373", "65782", "11053", "6235" )
# unsuccessful data fetching due to HTTP 404 error
spp_legislation <- spp_cites_legislation(taxon_id = taxonid, scope = "all", raw = TRUE)
I think we should show the page currently handled + the number of pages required + the total of pages available. Currently, the second one is missing, making it rather difficult to assess how long it's gonna take based on what is displayed.
Maybe 12?
@ibartomeus yes I think it would be great if you could have a look at the vignette. probably we could also have two files,
If you like this idea I am also happy to kickstart the two files and then we can work on them together.
The pkgdown website is deployed by Jenkins https://dev.ropensci.org/blue/organizations/jenkins/rcites/
looks like it has been a while since it was properly deployed...
And I guess the maintainer should be @JonasGeschke !
The process is described here:
https://github.com/ropensci/onboarding#how-submit
Looks easy, but we need to check the guidelines first. Also, What do you think about submitting to JOSS (which is the same process)? For me and given the nature of this package, would be enough. This would give us a DOI, a line in our CV under peer-reviewed papers and a to be indexed in G scholar.
I am skeptical MEE would be interested. I am not sure which other Journals accept quick notes on R packages.
regarding the function prefixes:
The authors use the sppplus_ prefix for some functions, and taxon_ for others. It might be simpler to have all functions retrieving something from the API to start with the same prefix (if you want it shorter, I suggest spl_).
as far as I see we do have
sppplus_
for general access by means of login/token and getting the taxon id through the taxon concept andtaxon_
for receiving data for a specific taxon from the database.I think this actually is close to what the reviewer asked for ... a few things I would propose to change:
sppplus_simplify()
probably doesnt need a prefix at all?sppplus_special_case()
should be a helper function?sppplus_taxonconcept()
could become taxon_concept()
get_
instead of taxon_
resulting in the following function names:
token
or set_token
/ simplify
/ get_taxonconcept
/ get_cites_legislation
/ get_eu_legislation
/ get_distribution
/ get_references
for the helper functions I then would propose rcites_
as prefix.
what do you think? if you both agree I would change the prefixes.
Should citesr-vignette.Rmd
live in both vignettes/
and inst/doc/
? Or we can remove one?
This prevents fast-failing in batch mode, but it requires to be careful as the post-processing of the request needs to be adjusted.
This is introduced in 74feae7.
When running a command that makes an API call in a non-interactive R session, in the absence of an API key, rcites has an infinite recursion error where it enters an unescapable loop. For example:
library(rcites)
spp_taxonconcept(query_taxon = "Carcharodon carcharias")
#>
#> `SPECIESPLUS_TOKEN` env var has not been set yet.
#> A token is required to use the species + API, see
#> https://api.speciesplus.net/documentation
#>
#> Enter your token without quotes:
#> no token provided
#>
#> `SPECIESPLUS_TOKEN` env var has not been set yet.
#> A token is required to use the species + API, see
#> https://api.speciesplus.net/documentation
#>
#> Enter your token without quotes:
#> no token provided
#>
#> `SPECIESPLUS_TOKEN` env var has not been set yet.
#> A token is required to use the species + API, see
#> https://api.speciesplus.net/documentation
#>
#> Enter your token without quotes:
#> no token provided
#>
#> `SPECIESPLUS_TOKEN` env var has not been set yet.
#> A token is required to use the species + API, see
#> https://api.speciesplus.net/documentation
...[Repeats several hundred times]
This is the result when using reprex::reprex()
to produce the example. In the case where the non-interactive mode is in knitting an R Markdown document or in R CMD check
, one will get an error like Error: C stack usage 7971268 is too close to the limit
, which generally indicates infinite recursion - the depth of the function call stack is too large.
I'm not sure exactly why this occurs, but I would suggest checking for the presence of a token early and exiting with an informative error to avoid this.
Created on 2019-05-21 by the reprex package (v0.3.0)
devtools::session_info()
#> ─ Session info ──────────────────────────────────────────────────────────
#> setting value
#> version R version 3.6.0 (2019-04-26)
#> os macOS Mojave 10.14.4
#> system x86_64, darwin15.6.0
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz America/New_York
#> date 2019-05-21
#>
#> ─ Packages ──────────────────────────────────────────────────────────────
#> package * version date lib source
#> assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.0)
#> backports 1.1.4 2019-04-10 [1] CRAN (R 3.6.0)
#> callr 3.2.0 2019-03-15 [1] CRAN (R 3.6.0)
#> cli 1.1.0 2019-03-19 [1] CRAN (R 3.6.0)
#> crayon 1.3.4 2017-09-16 [1] CRAN (R 3.6.0)
#> desc 1.2.0 2018-05-01 [1] CRAN (R 3.6.0)
#> devtools 2.0.2 2019-04-08 [1] CRAN (R 3.6.0)
#> digest 0.6.19 2019-05-20 [1] CRAN (R 3.6.0)
#> evaluate 0.13 2019-02-12 [1] CRAN (R 3.6.0)
#> fs 1.3.1 2019-05-06 [1] CRAN (R 3.6.0)
#> glue 1.3.1 2019-03-12 [1] CRAN (R 3.6.0)
#> highr 0.8 2019-03-20 [1] CRAN (R 3.6.0)
#> htmltools 0.3.6 2017-04-28 [1] CRAN (R 3.6.0)
#> knitr 1.23 2019-05-18 [1] CRAN (R 3.6.0)
#> magrittr 1.5 2014-11-22 [1] CRAN (R 3.6.0)
#> memoise 1.1.0 2017-04-21 [1] CRAN (R 3.6.0)
#> pkgbuild 1.0.3 2019-03-20 [1] CRAN (R 3.6.0)
#> pkgload 1.0.2 2018-10-29 [1] CRAN (R 3.6.0)
#> prettyunits 1.0.2 2015-07-13 [1] CRAN (R 3.6.0)
#> processx 3.3.1 2019-05-08 [1] CRAN (R 3.6.0)
#> ps 1.3.0 2018-12-21 [1] CRAN (R 3.6.0)
#> R6 2.4.0 2019-02-14 [1] CRAN (R 3.6.0)
#> rcites * 1.0.0 2018-11-18 [1] CRAN (R 3.6.0)
#> Rcpp 1.0.1 2019-03-17 [1] CRAN (R 3.6.0)
#> remotes 2.0.4 2019-04-10 [1] CRAN (R 3.6.0)
#> reprex 0.3.0 2019-05-16 [1] CRAN (R 3.6.0)
#> rlang 0.3.4 2019-04-07 [1] CRAN (R 3.6.0)
#> rmarkdown 1.12 2019-03-14 [1] CRAN (R 3.6.0)
#> rprojroot 1.3-2 2018-01-03 [1] CRAN (R 3.6.0)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.0)
#> stringi 1.4.3 2019-03-12 [1] CRAN (R 3.6.0)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 3.6.0)
#> testthat 2.1.1 2019-04-23 [1] CRAN (R 3.6.0)
#> usethis 1.5.0 2019-04-07 [1] CRAN (R 3.6.0)
#> withr 2.1.2 2018-03-15 [1] CRAN (R 3.6.0)
#> xfun 0.7 2019-05-14 [1] CRAN (R 3.6.0)
#> yaml 2.2.0 2018-07-25 [1] CRAN (R 3.6.0)
#>
#> [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library
I don't understand why (it should be around 70% not 0%) , this needs to be fixed.
From the console log https://travis-ci.org/ropensci/rcites/builds/586822947:
The downloaded source packages are in
‘/tmp/RtmpCWTuuR/downloaded_packages’
Installing R packages from GitHub: r-lib/covr
0.67s$ Rscript -e 'remotes::install_github(c("r-lib/covr"))'
File .Renviron contains invalid line(s)
[secure]
They were ignored
Error: Failed to install 'unknown package' from GitHub:
cannot open URL 'https://api.github.com/repos/r-lib/covr/contents/DESCRIPTION?ref=master'
Execution halted
The command "Rscript -e 'remotes::install_github(c("r-lib/covr"))'" failed and exited with 1 during .
This may help r-lib/devtools#2020
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.