19

有没有办法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

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

4

1 回答 1

11

更新:我认为问题在于间距和引号。这有效(在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)"
于 2014-02-12T16:32:11.613 回答