Ich sehe, wie ein Rscript führen die Operationen, die ich will, wenn ein Dateiname als ein Argument, z. wenn meine Rscript script
genannt wird und enthält:Lassen Sie ein Rscript lesen oder eine Eingabe von stdin nehmen
#!/usr/bin/Rscript
path <- commandArgs()[1]
writeLines(readLines(path))
Dann kann ich aus der Bash-Befehlszeile ausführen:
Rscript script filename.Rmd --args dev='svg'
und erfolgreich den Inhalt filename.Rmd
wieder aus mir Echo erhalten. Wenn stattdessen die obige Argument wie filename.Rmd
einen Dateinamen von geben ich möchte es passieren Text von stdin
, ich versuche zu modifizieren mein Skript von stdin zu lesen:
#!/usr/bin/Rscript
writeLines(file("stdin"))
aber ich weiß nicht, wie das Kommandozeilen-Aufruf für diese konstruieren Fall. Ich habe versucht, Rohrleitungen in dem Inhalt:
cat filename.Rmd | Rscript script --args dev='svg'
und auch versucht, Umleitung:
Rscript script --args dev='svg' < filename.Rmd
und so oder so bekomme ich den Fehler:
Error in writeLines(file("stdin")) : invalid 'text' argument
(Ich habe auch versucht open(file("stdin"))
). Ich bin mir nicht sicher, ob ich das Rscript falsch oder das Befehlszeilenargument falsch oder beides konstruiere.
möglich Duplikat [Piping stdin R] (http://stackoverflow.com/questions/9370609/piping-stdin-to-r) – hrbrmstr
aber Ihren Fehler könnte mit 'writeLines' zu lesen vs 'readLines' – hrbrmstr
Danke; mit 'readLines (file (" stdin "))' anstelle von 'open (file (" stdin "))' löst mein Problem. – cboettig