R-alpha: paste problem in TASKS --- yes, I do really want it

Martin Maechler Martin Maechler <maechler@stat.math.ethz.ch>
Sat, 4 Oct 1997 17:49:15 +0200

This is from line 104 of current TASKS:

TASK:	"paste" problem
FROM:	maechler@stat.math.ethz.ch
	in S,
		paste(....., collapse = string)
	always returns ONE string  (a character vector of length 1),
	according to documentation and several examples.
	in R, this is not true:
		R> paste(rep(" ",0), collapse="...") #anything for collapse
		S> paste(rep(" ",0), collapse="...") #anything for collapse
		[1] ""
	Again, I think	R  is more logical than S here, but it was decided
	that in minor cases, compatibility comes first...
	[ Low priority.	 Complain if you really need it. ]
I hereby complain .

Yes I do want it.  The current behaviour results in  code being broken 
which would work otherwise.
{{of course I can always fix that code by an extra if(....) else .....
  but the point is that if  parse(..) behaved more reasonable,
  I did not have to fix that code..

Yet another example is the  `fun()' Example in  ?tempfile
[in the latest snapshot of R-0.60]
which terminates on error for me just because of the above bug:

fun <- function() {
  FILE <- tempfile("fun")
  system(paste("printenv >", FILE))
  x <- strsplit(scan(FILE, what = ""), "=")
  v <- n <- character(LEN <- length(x))
  for (i in 1:LEN) {
    n[i] <- x[[i]][1]
    v[i] <- paste(x[[i]][-1], collapse = "=")
  structure(v, names = n)

> fun()
Read 83 items
Error in "[<-"(c("/u/sfs/adm", "/usr/local/bin", ".:/u/maechler/bib:/u/maechler/tex/styles:.:/u/sfs/bib",  : nothing to replace with

--- and the reason is:    x[[i]][-1]  is empty (some environment values are
					        just defined with no value ..)
 in which case 
		 paste(x[[i]][-1], collapse = "=")

 where it rather should return (IMHO)  

 v[i] <- character(0)  then gives the error, whereas
 v[i] <- ""		would exactly produce what is wanted.

r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch