how to handle no lines in input with pipe()
Thank you very much for your suggestion...that works perfectly. Thanks, Andrew
On Mon, Apr 4, 2011 at 5:46 PM, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
On Mon, 4 Apr 2011, Andrew Yee wrote:
This has to do with using pipe() and grep and read.csv()
I have a .csv file that I grep using pipe() and read.csv() as follows:
read.csv(pipe('grep foo bar.csv'))
However, is there a way to have this command run when for example,
there is no "foo" text in the bar.csv file? ?I get an error message
(appropriately):
Error in read.table(file = file, header = header, sep = sep, quote =
quote, ?:
?no lines available in input
Is there a way to "inspect" the output of pipe before passing it on to
read.csv()?
You have to read from a pipe to 'inspect' it. ?So
tmp <- readLines(pipe('grep foo bar.csv'))
if(!length(tmp)) do something else
else {
?res <- read.csv(con <- textConnection(tmp))
?close(con)
}
OTOH, unless the file is enormous you could simply read it into R and use
grep(value = TRUE) on the character vector.
Thanks, Andrew
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
-- 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