直接从另一个程序读取csv

时间:2012-01-21 14:48:24

标签: r

如何告诉R从另一个程序的stdout而不是文件中导入read.table命令中的csv-data?我希望R能够自行启动我的csv-export-utility。

2 个答案:

答案 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,但这个问题应该是堆栈溢出。