7
我看到如何让Rscript在给出文件名作为参数时执行我想要的操作,例如,如果我的RSCRIPT被称为script
,包含:让Rscript读取或从标准输入中获取输入
#!/usr/bin/Rscript
path <- commandArgs()[1]
writeLines(readLines(path))
然后,我可以从bash命令行中运行:
Rscript script filename.Rmd --args dev='svg'
,并成功得到filename.Rmd
回显给我看的内容。如果不是通过上述说法的文件名一样filename.Rmd
我想文本从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,或者是命令行参数不正确,或者两者都有。
可能重复(http://stackoverflow.com/questions/9370609/piping-stdin-to-r) – hrbrmstr
但可能会使用您的错误'writeLines'到读vs'readLines' – hrbrmstr
谢谢;使用'readLines(file(“stdin”))'代替'open(file(“stdin”))'解决了我的问题。 – cboettig