From hpages at fhcrc.org  Sat Jan  4 02:02:31 2014
From: hpages at fhcrc.org (=?windows-1252?Q?Herv=E9_Pag=E8s?=)
Date: Fri, 03 Jan 2014 17:02:31 -0800
Subject: [Rd] substring() and propagation of names
In-Reply-To: <52AACE5D.2040409@fhcrc.org>
References: <52AACE5D.2040409@fhcrc.org>
Message-ID: <52C75DA7.5040606@fhcrc.org>

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



[Rd] substring() and propagation of names
=?windows-1252?Q?Herv=E9_Pag=E8s?=