2012-01-21 13 views
2

Rのファイルからではなく、別のプログラムのstdoutからread.tableコマンドでcsv-dataをインポートするにはどうすればよいですか? Rは私自身のcsv-export-utilityを起動します。別のプログラムから直接csvを読む

答えて

7

help(connections)のヘルプページとpipe()機能のマニュアルを参照してください。ここで

完全な(しかし、無意味な)例である我々は、CSVファイルを書き込む

R> write.csv(iris, file="/tmp/iris.csv", row.names=FALSE) 

、その後、ちょうど標準入力上のコンテンツを表示し、pipe()からread.csv()を経由してそれを読むためにcatを使用します。

R> newiris <- read.csv(pipe("cat /tmp/iris.csv")) 

私たちが取得することは、私たちが持っていたものであると予想:

R> head(newiris) 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
1   5.1   3.5   1.4   0.2 setosa 
2   4.9   3.0   1.4   0.2 setosa 
3   4.7   3.2   1.3   0.2 setosa 
4   4.6   3.1   1.5   0.2 setosa 
5   5.0   3.6   1.4   0.2 setosa 
6   5.4   3.9   1.7   0.4 setosa 
R> all.equal(iris, newiris) 
[1] TRUE 
R> 
+0

Gosh、ちょうど私に 'pipe(" cat

1

named pipeを使用してください。ただし、この問題はスタックオーバーフローになるはずです。

関連する問題