3

我有以下两种从标准输入读取的方式。但是使用的方法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
4

1 回答 1

3

这有效:

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

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

print(f)
于 2013-04-14T23:45:08.780 回答