On 24/10/2016 1:51 PM, Kevin Ushey wrote:
Hi R-devel,
One of the more common issues that new R users see, and become stumped
by, is error messages during package load of the form:
> library(ggplot2)
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()),
versionCheck = vI[[j]]) :
there is no package called 'Rcpp'
Error: package or namespace load failed for 'ggplot2'
Typically, error messages of this form are caused simply by one or
more dependent packages (in this case, 'Rcpp') not being installed or
available on the current library paths. (A side question, which I do
not know the answer to, is how users get themselves into this state.)
I think one way to get here is to be running with several libraries.
You install ggplot2 while Rcpp is available, but in a different part of
the .libPaths list, then in a later session try to use it with a
different .libPaths setting.
I believe it would be helpful for new users if the error message
reported here was a bit more direct, e.g.
> library(ggplot2)
Error: 'ggplot2' depends on package 'Rcpp', but 'Rcpp' is not installed
consider installing 'Rcpp' with install.packages("Rcpp")
The risk with this message is that Rcpp may really be installed, but
it's just not currently on .libPaths. Detecting that situation and
reporting on it looks like it would be relatively hard: it would mean
the ggplot2 installation needs to record where it found all
dependencies, and if at some later time it doesn't find one, see if that
location still exists and would still work (in which case the message
should suggest modifying .libPaths). I think that's too much work.
Even a simple change like
Error: 'ggplot2' depends on package 'Rcpp', but 'Rcpp' was not found
might not be easy (which function knows both names?) However, if you
want to suggest a patch to implement this, I would take a look.
Duncan Murdoch
In other words, it might be helpful to avoid printing the
'loadNamespace()' call on error (since it's mostly just scary /
uninformative), and check up-front that the package is installed
before attempting to call 'loadNamespace()'. I'm sure a number of
novice users will still just throw their hands up in the air and say
"I don't know what to do", but I think this would help steer a number
of users in the right direction.
(The prescription to suggest installing a package from CRAN if
available might be a step too far, but I think making it more clear
that the error is due to a missing dependent package would help.)
Any thoughts?
Kevin
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel