[R] paste / system mystery

Douglas Bates dmbates at gmail.com
Mon Aug 15 19:48:27 CEST 2005


On 8/15/05, ivo_welch-rstat8303 at mailblocks.com
<ivo_welch-rstat8303 at mailblocks.com> wrote:
> 
> Dear R wizards:
> 
> under R-2.1.0:
> 
> eargs <- 3:5;
> line <- paste(c("echo A B", eargs));
> cat("executing from R: '", line, "'\n");
> system(line);
> 
> Oddly, only "A" and "B" are echoed, not the eargs.  I had hoped that
> line would be one string at this point, and for printing this seems to
> be true.  However, unlist(line) still gives me the 4 components.  It
> almost seems like the objects were not really pasted, but kept separate
> [perhaps to conserve memory]---which works internally, but not
> externally.
> 
> Is this my poor understanding of R, an R "feature," or an R bug?

Poor understanding but the mistake is a common one.  If you want to
form a character vector of length 1 you must use the "collapse"
argument to paste().  Try

> eargs <- 3:5
> paste("echo A B", paste(eargs, collapse = " "))
[1] "echo A B 3 4 5"
>




More information about the R-help mailing list