Я использую bash
для данных труб через Rscript
как так: cat random.csv | Rscript test.R arg >| delete.csv
Можно ли написать stdout с помощью write_csv() из readr?
Моя цель состоит в том, чтобы использовать R
пакет readr
и чтение стандартного ввода и записи на стандартный вывод. Я нашел answer to stdin here.
test.r
#!/usr/bin/Rscript
suppressMessages(library(readr))
args <- commandArgs(trailingOnly = TRUE)
df.in <- read_csv(file("stdin"))
write_csv(df.in, path = stdout())
Приведенный выше код выдает следующее сообщение об ошибке в командной строке:
Сообщение об ошибке
Error in path.expand(path) : invalid 'path' argument
Calls: write_csv -> write_delim -> normalizePath -> path.expand
Execution halted
Я также попытался write_csv(df.in, file("stdout"))
и write_csv(df.in, stdout())
с тем же сообщением об ошибке.
Для воспроизводимости, вот ссылка на random.csv
Definition of variables, by WHO for the Global Tuberculosis Report [43kb]
Спасибо @ m0nhawk - это очень близко. Сообщение об ошибке больше не отображается. Тем не менее, 'delete.csv' имеет все данные, напечатанные в одной строке, когда должно быть несколько строк. Если вы завершите свой ответ с помощью 'cat()', результат будет правильным на деньги. например 'Кот (format_csv (df.in))'. Обновите, и я приму ваш ответ. –