如何将Rscript -e传递给多行字符串?

时间:2014-02-12 16:03:51

标签: r stdin rscript

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

这在香草R中是可能的

R --vanilla <<code
a <- "hello\n"
cat(a)
code

但是使用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

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

1 个答案:

答案 0 :(得分:8)

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

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

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

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

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

Rscript -e "a <- 3+3" -e "cat(a)"