WYi WYi - 5 months ago 64
Bash Question

Piping stdin to R

I am having trouble piping stdin to an R script.

Here is my toy script

test.R
:

#!/usr/bin/env Rscript
while(length(line <- readLines('stdin', n=1, warn=FALSE)) > 0) {
write(line, stderr())
# process line
}


I'd like to go through each line and do some processing. Here is my input file named
input
:

aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
ffffff


If I do

cat input | test.R


I only get:

aaaaaa


Is there anything that I missed?

Answer

This does not happen if you explicitly open the stdin connection.

#!/usr/bin/env Rscript
f <- file("stdin")
open(f)
while(length(line <- readLines(f,n=1)) > 0) {
  write(line, stderr())
  # process line
}
Comments