首页 > 解决方案 > 为什么 R CMD BATCH 不能让你的脚本访问系统的标准输入,而 Rscript 可以?

问题描述

简而言之, R

使用命令 R CMD BATCH 运行 R 的一个主要缺点是您的脚本无法访问系统的标准输入。幸运的是,还有第二个命令可以在批处理模式下运行 R:RScript 命令。

R 简介

R CMD BATCH:以批处理模式运行 R。运行R --restore --save可能有更多选项(请参阅 参考资料?BATCH)。

R 的介绍R命令有两种形式

R [options]

R CMD command args

什么R [options]命令相当于

R CMD BATCH "--args arg1 arg2" foo.R

?

什么R [options]命令相当于

Rscript foo.R arg1 arg2

?

为什么不能R CMD BATCH让你的脚本访问系统的标准输入?

为什么可以Rscript

谢谢。

标签: r

解决方案


因此,对于当前版本的 R,CMD 选项基本上只是 R 脚本的包装器。你可以在这里找到脚本的 UNIX 版本,看起来 windows 版本在这里嵌入了代码。

然而,Rscript 被构建为不同的可执行文件。它与仅使用不同选项运行 R 不同。这样做的主要原因是 R 假设如果有任何来自标准输入的内容,那么它应该被解释为要运行的代码。但是编写 Rscript 是为了将标准输入解释为数据。因此,只要您不是从标准输入读取数据,Rscript 和 R CMD BATCH 之间就没有真正的区别。


推荐阅读