如何传递Rscript -ea多行字符串?

nac*_*cab 17 stdin r rscript

有没有办法Rscript -e在多行中提供代码?

这在香草R中是可能的

R --vanilla <<code
a <- "hello\n"
cat(a)
code
Run Code Online (Sandbox Code Playgroud)

Rscript根据R版本,我使用两种不同的东西.

# R 3.0.2 gives two ignores
Rscript -e '
quote> a <- 3+3
quote> cat(a, "\n")
quote> '
# ARGUMENT 'cat(a,~+~"' __ignored__
# ARGUMENT '")' __ignored__

Rscript -e 'a <- 3+3;cat(a, "\n")'
# ARGUMENT '")' __ignored__

# R 2.15.3 gives an ignore for the multiline, but it works with semicolons
Rscript -e '
quote> a <- 3+3
quote> cat(a, "\n")
quote> '
# ARGUMENT 'cat(a,~+~"\n")' __ignored__

Rscript -e 'a <- 3+3;cat(a, "\n")'
6
Run Code Online (Sandbox Code Playgroud)

我显然使用了错误的语法.这样做的正确方法是什么?

Car*_*lli 9

更新:我认为问题是间距和引号.这工作(在Windows上):

Rscript -e "a <- 3+3; cat(a,'\n')"
6
Run Code Online (Sandbox Code Playgroud)

在Mac上,您必须转义转义字符:

Rscript -e 'a <- 3+3; cat(a,"\\n")'
Run Code Online (Sandbox Code Playgroud)

您也可以单独放置每个表达式.

Rscript -e "a <- 3+3" -e "cat(a)"
Run Code Online (Sandbox Code Playgroud)

  • 在R 3.0.2的Mac上,Rscript -e“ a &lt;-3 + 3; cat(a,'\ n')”对我不起作用,但是使用`-e`可能是一个不错的解决方法 (2认同)