这是我使用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
我该怎么做?
答案 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')