读取Rscript或从stdin获取输入

时间:2014-04-01 20:41:14

标签: r bash stdin

我看到当给出文件名作为参数时,如何让Rscript执行我想要的操作,例如如果我的Rscript被称为script并且包含:

#!/usr/bin/Rscript 
path <- commandArgs()[1]
writeLines(readLines(path))

然后我可以从bash命令行运行:

Rscript script filename.Rmd --args dev='svg'

并成功获取filename.Rmd的内容回复给我。如果不是传递上面的参数像filename.Rmd这样的文件名,我想从stdin传递文本,我尝试修改我的脚本以从stdin读取:

#!/usr/bin/Rscript 
writeLines(file("stdin"))

但我不知道如何为这种情况构建命令行调用。我尝试了内容:

cat filename.Rmd | Rscript script --args dev='svg'

并尝试重定向:

Rscript script --args dev='svg' < filename.Rmd

无论哪种方式我都会收到错误:

Error in writeLines(file("stdin")) : invalid 'text' argument

(我还试过open(file("stdin")))。我不确定我是否错误地构造了Rscript,或者错误地构造了命令行参数,或者两者都没有。

1 个答案:

答案 0 :(得分:9)

您需要从file("stdin")创建的连接中读取文本,以便将有用的内容传递给text的{​​{1}}参数。这应该工作

writeLines()