如何获取读取标准输入的R脚本

时间:2013-04-14 22:47:07

标签: r stdin

我有两种从stdin读取的方法。但使用source()的方法不起作用。有人知道如何使source()方法有效吗?感谢。

~$ cat main.sh 
#!/usr/bin/env bash

set -v
cat main.csv | Rscript main.R
cat main.csv | R -q --vanilla <<EOF
source('main.R')
EOF
~$ cat main.R
f=read.csv(file('stdin'))
f
~$ ./main.sh
cat main.csv | Rscript main.R
> f=read.csv(file('stdin'))
> f
    X V1 V2
1   1  1 11
2   2  2 12
3   3  3 13
4   4  4 14
5   5  5 15
6   6  6 16
7   7  7 17
8   8  8 18
9   9  9 19
10 10 10 20
> 
cat main.csv | R -q --vanilla <<EOF
source('main.R')
EOF
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input
Calls: source ... withVisible -> eval -> eval -> read.csv -> read.table
Execution halted

1 个答案:

答案 0 :(得分:3)

这有效:

cat main.csv | R -q --vanilla -e 'source("main.R")'

main.R的最后一行已替换为

print(f)