[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