3

stdin から読み取るには、次の 2 つの方法があります。しかし、使用する方法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 に答える