[R] reading in results from system(). There must be an easier way...

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Sep 12 20:10:58 CEST 2008


Why not use

con <- pipe(COMMAND)
foo <- read.delim(con, colClasses="numeric")
close(con)

?  See the 'R Data Input/Output Manual'.

On Fri, 12 Sep 2008, Michael A. Gilchrist wrote:

> Hello,
>
> I am currently using R to run an external program and then read the results 
> the external program sends to the stdout which are tsv data.
>
> When R reads the results in it converts it to to a list of strings which I 
> then have to maniuplate with a whole slew of commands (which, figuring out 
> how to do was a reall challenge for a newbie like myself)--see below.
>
> Here's the code I'm using.  COMMAND runs the external program.
>
>    rawInput= system(COMMAND,intern=TRUE);##read in tsv values
>    rawInput = strsplit(rawInput, split="\t");##split elements w/in the list
> 					      ##of character strings by "\t"
>    rawInput = unlist(rawInput); ##unlist, making it one long vector
>    mode(rawInput)="double"; ##convert from strings to double
>    finalInput = data.frame(t(matrix(rawInput, nrow=6))); ##convert
>
> Because I will be doing this 100,000 of times as part of an optimization 
> problem, I am interested in learning a more efficient way of doing this 
> conversion.
>
> Any suggestions would be appreciated.
>
>
> Thanks in advance.
>
> Mike
>
>
> -----------------------------------------------------
> Department of Ecology & Evolutionary Biology
> 569 Dabney Hall
> University of Tennessee
> Knoxville, TN 37996-1610
>
> phone:(865) 974-6453
> fax:  (865) 974-6042
>
> web: http://eeb.bio.utk.edu/gilchrist.asp
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list