On 13-04-24 10:12 AM, Martin Morgan wrote:
On 04/24/2013 06:03 AM, Duncan Murdoch wrote:
On 13-04-24 5:46 AM, Liviu Andronic wrote:
Dear all,
I've bumped into the: "Error in loadNamespace(name) : there is no
package called ‘R.utils’" error. I've already read a bit on this (
http://www.cybaea.net/Blogs/Data/A-warning-on-the-R-save-format.html )
but I have a follow-up question.

Given a workspace that automatically loads a package that I don't
really need/want (e.g. ‘R.utils’), how do I identify which object
requires this package to load? I would like to avoid loading ‘R.utils’
every time I open an R session.

That's not easy, because the code in R that triggers that error has no idea of
the name of the object it is loading.

Maybe traceback() can provide some hints? I did, more or less arbitrarily

library(rms)
a = list(fun=ie.setup)
save(a, file="/tmp/a.rda")
remove.packages("rms")

and then in a new session

  > load("/tmp/a.rda")
Error in loadNamespace(name) : there is no package called 'rms'
  > traceback()
7: stop(e)
6: value[[3L]](cond)
5: tryCatchOne(expr, names, parentenv, handlers[[1L]])
4: tryCatchList(expr, classes, parentenv, handlers)
3: tryCatch(loadNamespace(name), error = function(e) stop(e))
2: getNamespace(c("rms", "3.6-3"))
1: load("/tmp/a.rda")

with the line numbered 2 giving me the necessary hint.

That tells you that some object needs the rms package, but I don't see how you would know it is "a" that is the problem. We already knew that rms was needed from the error message.

What I've done sometimes in debugging is to change that error to a warning in the getNamespace() function, and add some tracing code to the serialization code to print the names of objects as they are loaded. (This goes in ReadItem in src/main/serialize.c.)

I wouldn't expect Liviu to make those changes, but perhaps a "verbose" option could be added to load(), so that it could be available to users.

Duncan Murdoch


Martin



You could try a binary search to find out, but it will be tedious:
1. Install R.utils.
2. Load the workspace successfully.
3. Delete half the objects, and save it.
4. Uninstall R.utils, and see if you can load the workspace.

At this point you'll know if there's an object needing R.utils still left or
not, and you can repeat the steps until you find a single object that causes the
problem.  (But it might not be the only one, so deleting it from the original
workspace might not solve your problem.)

A better approach is to *never* save and load workspaces unless you know exactly
what is in them.  Always reply "no" to the question about saving your workspace
(or set that as the default).  If you accidentally end up with a workspace being
loaded, delete it.

Duncan Murdoch


Regards,
Liviu


sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: i686-pc-linux-gnu (32-bit)

locale:
   [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
LC_TIME=en_US.UTF-8
   [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
   [7] LC_PAPER=C                 LC_NAME=C
LC_ADDRESS=C
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=C

attached base packages:
[1] datasets  grDevices splines   graphics  utils     stats
methods   base

other attached packages:
   [1] R.utils_1.23.2    R.oo_1.13.0       R.methodsS3_1.4.2
tables_0.7.57     reshape2_1.2.2
   [6] car_2.0-15        nnet_7.3-6        MASS_7.3-23
Hmisc_3.10-1      survival_2.37-2
[11] foreign_0.8-53

loaded via a namespace (and not attached):
[1] cluster_1.14.3   grid_2.15.3      lattice_0.20-13  plyr_1.8
   rstudio_0.97.312
[6] stringr_0.6.2    tools_2.15.3



______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to