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
STATUS: Open
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
character(0)
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")
on.exit(unlink(FILE))
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 = "=")
returns
character(0)
where it rather should return (IMHO)
""
v[i] <- character(0) then gives the error, whereas
v[i] <- "" would exactly produce what is wanted.
-----
Martin
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-