我正在尝试将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
我知道这背后可能有一个微不足道的原因,但我无法弄明白。有人可以指出我的错误在哪里吗?是否有任何建议?
答案 0 :(得分:3)
setGeneric
是methods
包的一部分,通常在您使用Rscript
或littler
时在交互式会话中启动R但不在非交互式会话中加载。 / p>
因此,您需要在脚本中调用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"