2014-04-01 13 views
7

Bir Rscript'in argüman olarak bir dosya adı verildiğinde istediğim işlemleri nasıl gerçekleştireceğimi görüyorum, ör. Benim Rscript script denilen ve içerdiği takdirde:Bir Rscript okundu ya da stdin'den giriş al

Rscript script filename.Rmd --args dev='svg' 

başarıyla bana geri yankılandı filename.Rmd içeriğini almak:

#!/usr/bin/Rscript 
path <- commandArgs()[1] 
writeLines(readLines(path)) 

Sonra bash komut satırından çalıştırabilirsiniz. yerine filename.Rmd gibi yukarıdaki argüman bir dosya adı geçen ben stdin itibaren o metin geçmek istiyorsanız, ben stdin'den okumak benim komut dosyasını değiştirerek deneyin:

#!/usr/bin/Rscript 
writeLines(file("stdin")) 

ama bunun için komut çağrısını oluşturmak için nasıl bilmiyorum vaka.

cat filename.Rmd | Rscript script --args dev='svg' 

ve ayrıca denenmiş yönlendirme: Ben içeriği boru denedik

Rscript script --args dev='svg' < filename.Rmd 

ve her iki durumda hata alıyorum:

Error in writeLines(file("stdin")) : invalid 'text' argument 

(Ben de open(file("stdin")) denedim). Yanlış bir Rscript veya komut satırı argümanını yanlış mı, yoksa her ikisini mi yapıyorum emin değilim.

+1

olası yinelenen (http://stackoverflow.com/questions/9370609/piping-stdin-to-r) – hrbrmstr

+1

ancak hata 'writeLines' için kullanıyor olabilir read read 'readLines' – hrbrmstr

+0

Teşekkürler; 'readLines (dosya (" stdin "))' i kullanarak '' açık (dosya ("stdin")) '' 'problemi çözer. – cboettig

cevap

7

textwriteLines() argümanına faydalı bir şey iletmek için file("stdin") tarafından oluşturulan bağlantıdan metni okumanız gerekir. Bu çalışması gerekir

#!/usr/bin/Rscript 
writeLines(readLines(file("stdin"))) 
[R Boru Stdin] arasında
İlgili konular