`cv.glmnet`适用于RStudio但不适用于RScript

时间:2015-12-15 16:47:53

标签: r

以下命令在RStudio中正常工作,但不适用于RScript:

require(glmnet)
calibdata = read.csv("calibrationfile.csv")

xs = model.matrix(as.formula("targetvar~predictor1+predictor2)),calibdata)[,-1] # -1 discards intercept constant, glmnet has its own
ys = as.numeric(unlist(calibdata["targetvar"]))
fit=cv.glmnet(xs,ys)

来自RScript的错误消息:

Error in is(x, "CsparseMatrix") : could not find function "new"
Calls: cv.glmnet -> glmnet -> elnet -> getcoef -> drop0 -> is
Execution halted

两种情况下的R版本均为3.2.3,而glmnet版本为2.0-2。

如何让glmnet在RScript中工作?

2 个答案:

答案 0 :(得分:6)

RScript有一个“可爱”的功能,就是不为你加载(基础包)方法。

所以你需要的是一个额外的

  require(methods)

  suppressMessages(library(methods))

对于它的价值,Jeff Horner和我写的littler命令行和脚本前端默认为你加载方法......

答案 1 :(得分:0)

我遇到了同样的问题,发现了两种可能的解决方法(只是为了补充@ Dirk Eddelbuettel的答案):

好吧,我在某个地方读到--default-packages=methods,utils需要传递给Rscript才能解决这个问题:https://github.com/stan-dev/rstan/issues/190

OR,

此外,似乎Rscript错过了methods包的负载。也可以通过在脚本开头调用library('methods')来解决此问题:https://github.com/dhimmel/elevcan/issues/1

希望这有帮助。