3

我正在尝试将 R 脚本转换为客户端可以在批处理模式下运行的东西。我的代码使用通用函数,开头附近的一个片段如下所示:

setGeneric("testInput", function(inputData, params = list())
    standardGeneric("testInput"))

我一直在使用R CMD BATCH,它工作正常。但是我找不到一种简单的方法让我的脚本在控制台上打印输出,因此基于此(并建议 Rscript.exe 是运行 R 批处理文件的“正确”方式)我决定切换到Rscript。但是,当使用 Rscript 运行相同的 .R 文件时,我得到以下信息:

Error: could not find function "setGeneric"
Execution halted

我知道这背后可能有一个微不足道的原因,但我就是想不通。有人可以指出错误在哪里吗?
有什么建议么?

4

1 回答 1

3

setGenericmethods包的一部分,通常在您在交互式会话中启动 R 时加载,但在非交互式会话中使用Rscriptor时不会加载littler

因此,您需要require(methods)在调用setGeneric脚本之前添加一个。

例如,此代码将不起作用

Rscript -e "setGeneric('mean', function(x) standardGeneric('mean'))"
Error: could not find function "setGeneric"
Execution halted

但这一个会起作用

Rscript -e "require(methods);setGeneric('mean', function(x) standardGeneric('mean'))"
Loading required package: methods
[1] "mean"
于 2013-07-02T16:44:52.417 回答