我正在尝试将 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
我知道这背后可能有一个微不足道的原因,但我就是无法弄清楚。有人可以指出我的错误在哪里吗?有什么建议吗?
最佳答案
setGeneric
是 methods
包的一部分,通常在您在交互式 session 中启动 R 时加载,而不是在非交互式 session 中使用 Rscript
或 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"
关于Rscript 无法识别 setGeneric 函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17423869/