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