Чтение CSV напрямую из другой программы - PullRequest
2 голосов
/ 21 января 2012

Как я могу сказать R импортировать данные csv в команду read.table из стандартного вывода другой программы, а не из файла? Я хочу, чтобы R запустил мою утилиту csv-export самостоятельно.

Ответы [ 2 ]

7 голосов
/ 21 января 2012

См. Страницу справки из 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 голос
/ 21 января 2012

Используйте именованный канал , но этот вопрос должен быть о переполнении стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...