Hi Joshua,

On 06/16/2015 03:32 PM, Joshua Bradley wrote:
Hi, first time poster here. During my time using R, I have always found
string concatenation to be (what I feel is) unnecessarily complicated by
requiring the use of the paste() or similar commands.


When searching for how to concatenate strings in R, several top search
results show answers that say to write your own function or override the
'+' operator.

Sample code like the following from this
<http://stackoverflow.com/questions/4730551/making-a-string-concatenation-operator-in-r>
page

"+" = function(x,y) {
     if(is.character(x) & is.character(y)) {
         return(paste(x , y, sep=""))
     } else {
         .Primitive("+")(x,y)
     }}

Note that paste0() is a more convenient and more efficient way to
concatenate strings:

  paste0(x, y)  # no need to specify 'sep', no separator is inserted

Related to this, one thing that has always bothered me is the
different/inconsistent recycling schemes used by different binary
operations in R:

> 1:3 + integer(0)
integer(0)

> c("a", "b", "c") >= character(0)
logical(0)

> paste0(c("a", "b", "c"), character(0))
[1] "a" "b" "c"

> mapply(paste0, c("a", "b", "c"), character(0))
Error in mapply(paste0, c("a", "b", "c"), character(0)) :
  zero-length inputs cannot be mixed with those of non-zero length

If I was to override `+` to concatenate strings, I would make it stick
to the recycling scheme used by arithmetic and comparison operators
(which is the most sensible of all IMO).

H.




An old (2005) post
<https://stat.ethz.ch/pipermail/r-help/2005-February/066709.html> on r-help
mentioned possible performance reasons as to why this type of string
concatenation is not supported out of the box but did not go into detail.
Can someone explain why such a basic task as this must be handled by
paste() instead of just using the '+' operator directly? Would performance
degrade much today if the '+' form of string concatenation were added into
R by default?



Josh Bradley

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


--
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpa...@fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to