[R] Ignoring loadNamespace errors when loading a file
Martin Morgan
mtmorgan at fhcrc.org
Mon Aug 22 13:26:45 CEST 2011
On 08/21/2011 11:52 PM, Allan Engelhardt wrote:
> On a Unix machine I ran caret::rfe using the multicore package, and I
> saved the resulting object using save(lm2, file = "lm2.RData").
> [Reproducible example below.]
>
> When I try to load("lm2.RData") on my Windows laptop, I get
>
> Error in loadNamespace(name) : there is no package called 'multicore'
>
> I completely understand the error and I would like to ignore it and
> still load the saved object data.
>
> I imagine that I can make myself an empty multicore package for Windows
> and load the data file successfully, but is there another way?
>
> (I am not going to use any multicore functionality; I just want to
> inspect some of the data stored in the object and the reference in
> question is just an unfortunately stored link from the original call.)
>
> (I did search for this question in the archives, but could only find it
> discussed in connection with starting R with a .RData file where the
> consensus seems to be to start R in vanilla mode and install the missing
> package. This situation is different and installing a Unix-only package
> on Windows is obviously a non-starter, except as I proposed above.)
>
> Obligatory reproducible example: On the Unix machine do
>
> library("multicore")
> a <- list(data = 1:10, fun = mclapply)
> save(a, file = "a.RData")
>
> and then try to load the "a.RData" file on Windows. The question is if I
> can recover the data (1:10) on that platform.
Is this a more realistic reproducible example (from ?rfe, modified to
use computeFunction=mclapply)?
data(BloodBrain)
x <- scale(bbbDescr[,-nearZeroVar(bbbDescr)])
x <- x[, -findCorrelation(cor(x), .8)]
x <- as.data.frame(x)
set.seed(1)
lmProfile <- rfe(x, logBBB,
sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65),
rfeControl = rfeControl(functions = lmFuncs,
number = 5,
computeFunction=mclapply))
Maybe provide a computeFunction that only indirectly references mclapply
computeFunction=function(...) {
if (require(multicore)) mclapply(...)
else lapply(...)
}
or editing the result object to remove references to mclapply
lmProfile$control$computeFunction <- NULL
Martin
>
> Allan
>
>> sessionInfo()
> R version 2.13.1 (2011-07-08)
> Platform: x86_64-pc-mingw32/x64 (64-bit)
>
> locale:
> [1] LC_COLLATE=English_United Kingdom.1252
> [2] LC_CTYPE=English_United Kingdom.1252
> [3] LC_MONETARY=English_United Kingdom.1252
> [4] LC_NUMERIC=C
> [5] LC_TIME=English_United Kingdom.1252
>
> attached base packages:
> [1] compiler stats graphics grDevices utils datasets methods
> [8] base
>
> other attached packages:
> [1] caret_4.98 cluster_1.14.0 reshape_0.8.4 plyr_1.6
> [5] lattice_0.19-31 boot_1.3-2 ctv_0.7-3
>
> loaded via a namespace (and not attached):
> [1] grid_2.13.1 tools_2.13.1
>
> ______________________________________________
> R-help at 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.
--
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109
Location: M1-B861
Telephone: 206 667-2793
More information about the R-help
mailing list