我有两种从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
答案 0 :(得分:3)
这有效:
cat main.csv | R -q --vanilla -e 'source("main.R")'
main.R
的最后一行已替换为
print(f)