Quoting https://stat.ethz.ch/pipermail/r-devel/2014-January/068167.html : ------------------- On 12/13/2013 01:07 AM, Hervé Pagès wrote: > Hi, > > In R < 3.0.0, we used to get: > > > substring(c(A="abcdefghij", B="123456789"), 2, 6:2) > A B A B A > "bcdef" "2345" "bcd" "23" "b" > > But in R >= 3.0.0, we get: > > > substring(c(A="abcdefghij", B="123456789"), 2, 6:2) > [1] "bcdef" "2345" "bcd" "23" "b" > > The names are not propagated anymore. Looks like a regression introduced at commit 59891 where many functions were modified to use rep_len() instead of rep() internally. Problem is, unlike rep(), rep_len() does not propagate the names. Given the number of files that were touched by this commit, a lot of functions could be affected. For example complex(): In R < 3.0.0: > complex(modulus=c(a=-1, b=0.77)) a b -1.00+0i 0.77+0i But in R >= 3.0.0: > complex(modulus=c(a=-1, b=0.77)) [1] -1.00+0i 0.77+0i etc... Cheers, H. > > Is this an intended change or a bug? I can't find anything about > this in the NEWS file. The man page for substring() in R >= 3.0.0 > still states: > > Value: > > ... > > For ‘substring’, a character vector of length the longest of the > arguments. This will have names taken from ‘x’ (if it has any > after coercion, repeated as needed), and other attributes copied > from ‘x’ if it is the longest of the arguments). > > Also note that the first argument of substring() is 'text' not 'x'. > > Thanks, > H. > -- 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: hpages at fhcrc.org Phone: (206) 667-5791 Fax: (206) 667-1319 ------------------- The above is still the case in R 3.3.2.