R输入重定向

时间:2015-10-25 13:19:24

标签: r input

这是我使用R的方式:

我通常在终端输入R,进入R控制台,然后使用:

source("prog.R")

执行我的程序并在控制台中检查结果。

现在,我需要从stdin读取数据,所以我做了:

f <- file("stdin")
open(f)
while(length(line <- readLines(f,n=1)) > 0) {
  # process line
}

现在我已将输入存储在input.txt中,我需要使用控制台中的source命令将其重定向到stdin。

与c ++一样

./a.out < input.txt

我需要在R控制台中,比如

>source("prog.R) < input.txt 

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您绝对可以编写非交互式R脚本。只是不要在交互式R shell中启动它们。相反,像启动C ++程序一样在命令行启动它们,并将以下shebang line放在脚本的顶部:

#!/usr/bin/env Rscript
… rest of script

然后在命令行上使脚本可执行:

chmod +x path/to/script

......并使用它:

path/to/script < input.txt

或者,您可以

Rscript path/to/script < input.txt

这样你就不需要shebang线,也不需要让脚本文件可执行。

顺便说一句,您可以在R。

中使用stdin()代替file('stdin')