Widzę, jak mieć Rscript wykonać operacje, które chcę, podając nazwę pliku jako argument, np. jeśli moja Rscript nazywa script
i zawiera:Mieć odczyt Rscript lub wziąć dane wejściowe ze stdin
#!/usr/bin/Rscript
path <- commandArgs()[1]
writeLines(readLines(path))
Następnie można uruchomić z wiersza poleceń bash:
Rscript script filename.Rmd --args dev='svg'
i skutecznie uzyskać zawartość filename.Rmd
echo z powrotem do mnie. Jeśli zamiast przechodzenia powyższy argument nazwę pliku jak filename.Rmd
Chcę przekazać mu tekst z stdin
staram modyfikując mój skrypt czytać ze standardowego wejścia:
#!/usr/bin/Rscript
writeLines(file("stdin"))
ale nie wiem, jak zbudować połączenie poleceń dla tego walizka. Próbowałem instalacji z treścią:
cat filename.Rmd | Rscript script --args dev='svg'
i również próbował przekierowanie:
Rscript script --args dev='svg' < filename.Rmd
i albo sposób pojawia się błąd:
Error in writeLines(file("stdin")) : invalid 'text' argument
(Próbowałem zostały również open(file("stdin"))
). Nie jestem pewien, czy niepoprawnie konstruuję Rscript, czy niepoprawnie argument wiersza poleceń, czy jedno i drugie.
możliwe duplikat [rurociągów stdin do R] (http://stackoverflow.com/questions/9370609/piping-stdin-to-r) – hrbrmstr
ale twój błąd może być używany do 'writeLines' czytaj vs "readLines" – hrbrmstr
Dzięki; używanie 'readLines (file (" stdin "))' zamiast 'open (file (" stdin "))' rozwiązuje mój problem. – cboettig