【问题标题】:`cv.glmnet` works in RStudio but not RScript`cv.glmnet` 适用于 RStudio 但不适用于 RScript
【发布时间】:2015-12-15 16:47:52
【问题描述】:

以下命令在 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 中工作?

【问题讨论】:

  • 是否应该将其迁移到 Stack Overflow?它似乎不是这里的主题,所以我认为不应该重新打开它,但我想知道它是否会从迁移中受益。

标签: r


【解决方案1】:

RScript 具有不为您加载(基本包)方法的“可爱”功能。

所以你只需要一个额外的

  require(methods)

  suppressMessages(library(methods))

不管怎样,Jeff Horner 和我为 R 编写的 littler 命令行和脚本前端默认为您加载方法...

【讨论】:

  • 我遇到了完全相同的问题。脚本正常运行,直到我对系统内核进行了更新。现在工作正常。谢谢德克。
【解决方案2】:

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

好吧,我在某处读到需要将 --default-packages=methods,utils 传递给 Rscript 以解决此问题:https://github.com/stan-dev/rstan/issues/190

或者,

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2020-11-23
    相关资源
    最近更新 更多