Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Piping stdin to R

Tags:

shell

r

pipe

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?

like image 499
WYi Avatar asked Feb 21 '12 00:02

WYi


1 Answers

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 } 
like image 184
Vincent Zoonekynd Avatar answered Sep 22 '22 12:09

Vincent Zoonekynd