Sto usando bash
ai dati di tubo attraverso un Rscript
in questo modo: cat random.csv | Rscript test.R arg >| delete.csv
E 'possibile scrivere stdout usando write_csv() da readr?
Il mio obiettivo è quello di utilizzare il pacchetto readr
R
sia leggere standard input e scrive stdout. Ho trovato il 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())
Il codice precedente produce il seguente messaggio di errore nella riga di comando:
messaggio di errore
Error in path.expand(path) : invalid 'path' argument
Calls: write_csv -> write_delim -> normalizePath -> path.expand
Execution halted
Ho anche provato write_csv(df.in, file("stdout"))
e write_csv(df.in, stdout())
produce lo stesso messaggio di errore.
Per la riproducibilità, ecco un link ad un random.csv
Definition of variables, by WHO for the Global Tuberculosis Report [43kb]
Grazie @ m0nhawk - questo è molto vicino. Il messaggio di errore non viene più visualizzato. Tuttavia, 'delete.csv' ha tutti i dati stampati su una singola riga quando dovrebbero esserci più righe. Se avvolgi la tua risposta con 'cat()' il risultato è giusto in the money. per esempio. 'Cat (format_csv (df.in))'. Aggiorna e accetterò la tua risposta. –