让Rscript读取或从stdin获取输入
我了解了在给定文件名作为参数时,如何让Rscript执行我想要的操作,例如,如果我的Rscript被称为让Rscript读取或从stdin获取输入,r,bash,stdin,R,Bash,Stdin,我了解了在给定文件名作为参数时,如何让Rscript执行我想要的操作,例如,如果我的Rscript被称为script,并且包含: #!/usr/bin/Rscript path <- commandArgs()[1] writeLines(readLines(path)) 并成功地将filename.Rmd的内容回显给我。如果我不想传递像filename.Rmd这样的文件名,而是想从stdin传递文本,我会尝试修改脚本以从stdin读取: #!/usr/bin/Rscript wri
script
,并且包含:
#!/usr/bin/Rscript
path <- commandArgs()[1]
writeLines(readLines(path))
并成功地将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
(我还尝试了打开(文件(“stdin”)
)。我不确定是Rscript构造不正确,还是命令行参数构造不正确,或者两者都不正确 您需要从file(“stdin”)
创建的连接中读取文本,以便将任何有用的内容传递给writeLines()的text
参数。这应该行得通
#!/usr/bin/Rscript
writeLines(readLines(file("stdin")))
可能重复,但您的错误可能是使用writeLines
读取vsreadLines
谢谢;使用readLines(file(“stdin”)
代替open(file(“stdin”))
解决了我的问题。
Error in writeLines(file("stdin")) : invalid 'text' argument
#!/usr/bin/Rscript
writeLines(readLines(file("stdin")))