如何告诉R
从另一个程序的stdout而不是文件中导入read.table
命令中的csv-data?我希望R
能够自行启动我的csv-export-utility。
答案 0 :(得分:7)
请参阅help(connections)
的帮助页面和pipe()
功能的文档。
这是一个完整的(但是没有意义的)我们编写csv文件的例子
R> write.csv(iris, file="/tmp/iris.csv", row.names=FALSE)
然后只需使用cat
在stdin上显示其内容,并通过read.csv()
中的pipe()
读取该内容:
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>
答案 1 :(得分:1)
使用named pipe,但这个问题应该是堆栈溢出。