Ich verwende bash
zu Rohrdaten durch eine Rscript
etwa so: cat random.csv | Rscript test.R arg >| delete.csv
Ist es möglich, stdout mit write_csv() aus readr zu schreiben?
Mein Ziel, die R
Paket readr
sowohl verwenden lesen stdin und stdout schreiben. Ich habe die answer to stdin here gefunden.
test.r
#!/usr/bin/Rscript
suppressMessages(library(readr))
args <- commandArgs(trailingOnly = TRUE)
df.in <- read_csv(file("stdin"))
write_csv(df.in, path = stdout())
Der obige Code erzeugt die folgende Fehlermeldung in der Befehlszeile:
Fehlermeldung
Error in path.expand(path) : invalid 'path' argument
Calls: write_csv -> write_delim -> normalizePath -> path.expand
Execution halted
ich auch write_csv(df.in, file("stdout"))
versucht haben und write_csv(df.in, stdout())
produziert die gleiche Fehlermeldung.
Für Reproduzierbarkeit, hier ist ein Link zu einer random.csv
Definition of variables, by WHO for the Global Tuberculosis Report [43kb]
Thanks @ m0nhawk - das ist sehr nah. Die Fehlermeldung wird nicht mehr angezeigt. Die Datei "delete.csv" enthält jedoch alle Daten in einer einzelnen Zeile, wenn mehrere Zeilen vorhanden sein müssen. Wenn Sie Ihre Antwort mit 'cat()' verpacken, liegt das Ergebnis direkt am Geld. z.B. 'cat (format_csv (df.in))'. Aktualisieren Sie und ich werde Ihre Antwort akzeptieren. –