Package vignette depends on tikz/pgf - r

My R package vignette uses tikz/pgf graphics. The R CMD check command throws an error message on operating systems where the LaTeX package tikz/pgf is not installed. On a vanilla Ubuntu system, for example, the Ubuntu package 'pgf' must be installed for R CMD check to complete without an error message. The CRAN servers seem to have tikz/pgf installed, but I cannot make sure this is always and everywhere the case. Is there any way I can add a dependency on pgf to the DESCRIPTION file of my R package? Can I just add it to the 'Depends' field (even though it is not an R package)? I would not like to trash the diagram because the package vignette is an article that was published in the Journal of Statistical Software, and I would like to use it as a vignette without any modification.

From http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file :
Other dependencies (external to the R system) should be listed in the ‘SystemRequirements’ field, possibly amplified in a separate README file.
There won't be any automatic check or informative error message generated by the R installation process, but at least the information will be stored in a consistent place ...

Related

Difficulty installing a package in R linux, dalton_rqi

Downloaded package from below URL.
Attempted to install using below command; response shown.
library(dalton.rqi,lib.loc='/home/X/Desktop/')
Error: package ‘dalton.rqi’ was built before R 3.0.0: please re-install it
https://my.clevelandclinic.org/departments/anesthesiology/depts/outcomes-research/risk-quantification
It appears this is a compiled package that maybe I don't have the source for? Is there a way to force install of the package? I'm unable to install using Rstudio GUI in its current form as a zip. Tried repackaging to tar.gz has Rstudio was looking for and also had a non-zero exit status error.
Any ideas?
I'm afraid this can't be achieved directly. The error message says it well: to use a package in R it needs to be built on an R version matching yours.
I can suggest two ways to move forward:
Contact the authors, ask for the R sources (it is somewhat surprising they did not make them available in the first place), and build the package yourself.
Downgrade your R version as far back as needed to match the one this pre-built package used.

Describe in R package DESCRIPTION a command line program as a requirement

I am trying to write a R package that depends on latexmk.
However, I am unable to find how to tell in the DESCRIPTION of the package that it requires latexmk to be installed. I was hoping someone would have dealt with this before and could give me some help.
If that is not possible, is there any way to provide a custom warning message when installing a package if a command is not found on the PATH?
You want SystemRequirements: latexmk.
See Section 1.1.1 "The DESCRIPTION File" of Writing R Extensions:
Dependencies external to the R system should be listed in the ‘SystemRequirements’ field, possibly amplified in a separate README file.
There are few more reference to the field in later sections of the manual.

"GraphClusterAnalysis" package in R

Please, how can I get "GraphClusterAnalysis" package installed? I am trying to use the "Highly connected sub graphs" (HCS) clustering algorithm for my data. I have tried to use install.packages() for the installation but I keep getting: package ‘GraphClusterAnalysis’ is not available (for R version 3.0.3).
I was able to use a method called "highlyConnSG()" for the HCS clustering algorithm which I retrieved after installing "RGBL" and "graph" packages from source "https://biconductor.org/bioLite.R". So to install those packages, type in the R environment command line:
source("https://biconductor.org/biocLite.R")
biocLite("RBGL")
biocLite("graph")
As far as I can see, this is a library, written by the authors of the book ( https://www.csc2.ncsu.edu/faculty/nfsamato/practical-graph-mining-with-R/PracticalGraphMiningWithR.html ).
Also on this page is provided the link to the archive with this library itself (here is the link: https://www.csc2.ncsu.edu/faculty/nfsamato/practical-graph-mining-with-R/R-code/GraphClusterAnalysis.zip ).
So you can load this library and after that you can try to install the library from source. Here is the stackoverflow question about how to do it:
How do I install an R package from source?
Nevertheless, as for me I wasn't successful in installing it from source.

calling R (2.15.3) from within R (3.0.2)

I would like to be able to call R (2.15.3) from within R (3.0.2). In order to use a package (windows binary, not on cran) that is available in only the older version of R. Is this possible?
This is R. There is no if, only how
said Simon Blomberg.
You could call an older version of R using system() and the appropriate hacks in your OS. Which is something odd to do, and opens tons of possibilities for serious damage to your computer when you hit it in frustration.
Or you could download the source of the package and rebuild it in R 3.0. There's been some rather drastic internal changes in the way packages are built and used in R (the most obvious being the removal of support for packages without a namespace).
Hence :
if the package does not have a namespace: download the source (.tar.gz), read the manual "Writing R extensions" if you didn't before, and add a namespace file with the usual exports. As explained in Writing R extensions, this can be as simple as adding a single line
exportPattern("^[^\\.]")
if the package has a namespace, build from source on your machine and you should be good to go. This is simply done by using:
install.packages("path/to/package.tar.gz",type="source")
Note that if you want to install from source on a Windows machine, you'll need a compatible version of Rtools : http://cran.r-project.org/bin/windows/Rtools/
If you don't want to be bothered with it, mail the author/maintainer of the package and kindly ask if they'd like to rebuild it for you.

Did the subdirectory structure of package repositories change as of R 2.15.2?

Kind of embarrassing / a no-go, but since it hasn't been that long that I've moved from "pure user" to "beginner-developer", I've never actually read the CHANGELOG when a new R version came out - well until today (and I have the feeling I should make this a habbit) ;-)
Yet I'm not sure if the supposed change actually occurred since I couldn't find anything about it at a first glimpse at the CHANGELOG of R R 2.15.2:
Actual question
Is it possible that the (subdirectory) structure of package repositories changed from
./bin/windows/contrib/2.xx/
to
./src/contrib/2.xx/ or even ./src/contrib?
Or at least that the PACKAGES file now needs to live here: ./src/contrib/PACKAGES?
Background info
Up to version 2.15.1, the following path worked to install packages from my local package repository:
path.repos <- "L:/R/packages"
repos <- file.path("file://", path.repos)
Function contrib.url would take repos and expand it to the right subdirectory:
> contrib.url(repos)
[1] "file:///L:/R/packages/bin/windows/contrib/2.15"
But when I try to run install.packages(), I get the following error for R 2.15.2:
> install.packages("mypkg",
+ lib=file.path(R.home(), "library"),
+ repos=repos,
+ type="win.binary"
+ )
Error in read.dcf(file = tmpf) : cannot open the connection
In addition: Warning message:
In read.dcf(file = tmpf) :
cannot open compressed file 'L:/R/packages/src/contrib/PACKAGES', probable reason 'No such file or directory'
>
When I do the same with R 2.15.1, everything works smoothly.
Due dilligence
There are some references with respect to repositories in the CHANGELOG, but the only section I found that gives me some evidence that the supposed change occurred is this:
PACKAGE INSTALLATION
For a Windows or Mac OS X binary package install, install.packages() will check if a source package is available on the same repositories, and report if it is a later version or there is a source package but no binary package available.
Just had a look at the official documentation again and got the idea that maybe arg type is not passed along to contrib.url() correctly as it seems to me install.package() is looking at the place for type="source" packages?
This particular bug isn't the same as mine.
This issue relates to checks install.packages() now runs before installing. As Rappster said, it tries to find a source package to compare the binary version with:
For a Windows or Mac OS X binary package install, install.packages() will check if a source package is available on the same repositories, and report if it is a later version or there is a source package but no binary package available.
So a simple way of squashing this message is creating the R/src/contrib directory and running tools::write_PACKAGES() in that directory to create (an empty) PACKAGES file.
And of course, the reason you aren't getting this message in 2.15.1 is that it doesn't do the checking (see R NEWS quote above) that 2.15.2 performs.
I have submitted a bug report of my issues. No news yet. May post it to the R mailing list as well.

Resources