以下命令在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中工作?
答案 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。
希望这有帮助。