Używam bash
do danych za pośrednictwem rur Rscript
tak: cat random.csv | Rscript test.R arg >| delete.csv
Czy można napisać stdout używając write_csv() z readr?
Moim celem jest, aby korzystać z pakietu R
readr
zarówno do odczytu i zapisu stdin stdout. Znalazłem 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())
Powyższy kod generuje następujący komunikat o błędzie w wierszu poleceń:
Wiadomość Błąd
Error in path.expand(path) : invalid 'path' argument
Calls: write_csv -> write_delim -> normalizePath -> path.expand
Execution halted
Próbowałem również write_csv(df.in, file("stdout"))
i write_csv(df.in, stdout())
wyświetlając ten sam komunikat o błędzie.
Dla powtarzalności, oto link do random.csv
Definition of variables, by WHO for the Global Tuberculosis Report [43kb]
Dzięki @ m0nhawk - to bardzo blisko. Komunikat o błędzie nie jest już wyświetlany. Jednak 'delete.csv' ma wszystkie dane wydrukowane w jednym wierszu, gdy powinno być wiele wierszy. Jeśli otoczysz swoją odpowiedź przez 'cat()', wynik jest odpowiedni dla pieniędzy. na przykład 'cat (format_csv (df.in))'. Zaktualizuj, a zaakceptuję twoją odpowiedź. –