-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support packages (libraries) in R #17
Comments
@gaocegege -- What are some top CRAN / BioConductor R packages that you would be interested in testing (or in having someone test for you)? Ideally these would be popular packages, low level (not a lot of dependencies), not have their own graphical outputs (for simplicity, and not to overlap with Processing), and be something that Processing users might want to use . For example, I might be interested in:
|
A preliminary look at Renjin package listings shows that they automatically test -- however they don't provide a single listing of packages that pass, and the packages that I chose above didn't pass testing (possibly because they are dependency-heavy or C/++ optimized), so we need to be systematic about searching or pick well-documented examples.
By contrast, here is a package in a Renjin-specific version that passes all tests. We might use it for our preliminary testing of whether importing works:
|
I've posted a question about listings of available test-passing renjin packages here: https://groups.google.com/forum/#!topic/renjin-dev/rrLM4wo3by8 |
Yeah, there are some packages which pass all the tests. And I agree that we could use them to test whether it works. As for those packages which fails some test cases, I think we should dive into the packages and have a try. And if there are some important libraries, maybe we could help renjin to implement them in JVM. Then we could use it in our mode. |
ref https://github.com/bedatadriven/renjin/tree/master/cli/src/main/java/org/renjin/cli Renjin CLI will download the package at runtime, we could take a look at it. |
Take plyr as an example, it has a lot of dependencies, put them into lib/mode manually is not what we want. I will take a look further. <dependencies>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>methods</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>parallel</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>datasets</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>stats</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>splines</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>grDevices</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>tcltk</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>stats4</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin.cran</groupId>
<artifactId>Rcpp</artifactId>
<version>0.12.5-renjin-7</version>
</dependency>
<dependency>
<groupId>org.renjin.cran</groupId>
<artifactId>Rcpp</artifactId>
<version>0.12.5-renjin-7</version>
<classifier>headers</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>tools</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>utils</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>grid</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>graphics</artifactId>
<version>0.8.2343</version>
</dependency>
<dependency>
<groupId>org.renjin</groupId>
<artifactId>compiler</artifactId>
<version>0.8.2343</version>
<scope>provided</scope>
</dependency>
</dependencies> |
From the dependency list, tcltk in particular jumps out at me as probably huge and possibly not necessary. Interesting that plyr passed automatic testing on the renjin package site -- looking at these dependencies I would have guessed that it wouldn't. |
Strange -- I just noticed that renjin's CRAN listing for plyr only lists a single dependency -- RCPP. http://packages.renjin.org/package/org.renjin.cran/plyr/1.8.4 ...which doesn't list any dependencies. So the web listings aren't matching up with that dependencies report. |
Perhaps for future research we could instead try something like stringi, which is a renjin-specific version and lists (?) no dependencies. |
I will take a look |
Strange. For |
Take plyr-1.8.4 as an example, the deps are defined in https://nexus.bedatadriven.com/content/groups/public/org/renjin/cran/plyr/1.8.4-b17/plyr-1.8.4-b17.pom. They are maven dependencies. |
Hmm, something is off about that this. Those aren't true dependencies, that is an expanded copy of the "Suggests" list from plyr 1.8.4 on CRAN: https://cran.r-project.org/web/packages/plyr/index.html
tcltk is definitely not a dependency. |
🤔 I have tried to run without them and it returns an error, I will have a try again and get some details |
Hmm. "Suggests" means that plyr "uses some functions from these packages in examples or in its vignettes." So if a build is running tests against examples or vignettes that make calls to the "suggests" packages then those tests would fail if the "suggests" are not installed -- but plyr will still work, it just can't run those examples. What kind of error are you getting? For discussion see: |
When I runs without Rcpp, it raises:
When I run with plyr and Rcpp:
|
Maarten on the renjin-dev list has responded with a very useful list of suggested renjin R packages for testing. https://groups.google.com/d/msg/renjin-dev/rrLM4wo3by8/O7cDR6V8AAAJ These entries from his suggestion list look like good starting points:
regexr, foreach, and magrittr are all syntax / control structure packages, and they look light on dependencies. Perhaps one would work better for a quick test? |
Yeah, I will have a look. Thanks for your information :) |
Great! Should we add an example sketch that demonstrates using an R library to the example set? |
Yeah, I will try to write an example. |
Renjin supports some of CRAN and BioConductor R libraries, Processing.R could benefit from it.
ref the post in forum
The text was updated successfully, but these errors were encountered: