从命令提示符运行(工作)R脚本时出错

时间:2014-09-17 08:50:32

标签: r batch-file

我正在尝试从Windows命令提示符运行R脚本(原因是稍后我想使用VBA运行脚本)。

设置了R环境变量后(请参阅帖子末尾),R_code.R中保存的以下代码行完美运行:

library('xlsx')
x <- cbind(rnorm(10),rnorm(10))
write.xlsx(x, 'C:/Temp/output.xlsx')

(为了运行脚本并获得生成的xlsx输出,我只需在Windows命令提示符下键入以下命令:Rscript C:\Temp\R_code.R)。

现在,鉴于这个&#34;玩具示例&#34;正在按预期工作,我试图移动到我的主要目标,这确实非常相似(从命令行运行一个简单的R脚本),但由于某种原因我不能成功。

同样,我必须使用特定的R包(-copula-,用于对一些相关的随机变量进行采样)并将R输出导出到csv文件中。 以下脚本(R_code2.R)在R:

中完美运行
library('copula')

par_1 <- list(mean=0, sd=1)
par_2 <- list(mean=0, sd=1)
myCop.norm <- ellipCopula(family='normal', dim=2, dispstr='un', param=c(0.2))
myMvd <- mvdc(myCop.norm,margins=c('norm','norm'),paramMargins=list(par_1,par_2))

x <- rMvdc(10, myMvd)
write.table(x, 'C:/Temp/R_output.csv', row.names=FALSE, col.names=FALSE, sep=',')

不幸的是,当我尝试从命令提示符(Rscript C:\Temp\R_code2.R)运行相同的脚本时,我收到以下错误:

Error in FUN(c("norm", "norm"))[[1L]], ...) :
cannot find the function "existsFunction"
Calls: mvdc -> mvdcCheckM -> mvd.has.marF -> vapply -> FUN

您对如何解决问题有任何想法吗? 任何帮助都非常感谢,S。

设置R环境变量(Windows) 对于那些想要复制代码的人来说,为了设置环境变量,你必须:

  1. 右键点击计算机 - &gt;属性 - &gt;高级系统设置 - &gt;环境变量
  2. 双击&#39;路径&#39;并添加;后跟您的Rscript.exe文件夹的路径。就我而言,它是;C:\Program Files\R\R-3.1.1\bin\x64

2 个答案:

答案 0 :(得分:2)

这是一个让我感到困惑的棘手问题。根据文档(?Rscript),

  

Rscript省略了方法包,因为它占用了大约60%的启动时间。

所以你的更好的解决方案恕我直言是在你的脚本顶部附近添加library(methods)

答案 1 :(得分:0)

对于那些感兴趣的人,我只需在命令提示符下键入以下内容即可解决问题:

R CMD BATCH C:\Temp\R_code2.R

我仍然不清楚为什么上一个命令不起作用。无论如何,再一次搜索R文档(see here)被证明是一个很好的选择!