[R] learning R
markleeds at verizon.net
markleeds at verizon.net
Wed Feb 25 09:48:04 CET 2009
David, Wacek: Just so everyone knows, I just looked and this is
explained quite clearly in the R Language Reference manual, very
similarly to what Wacek did below.
On Wed, Feb 25, 2009 at 3:42 AM, Wacek Kusnierczyk wrote:
> David Winsemius wrote:
>>
>> On Feb 24, 2009, at 11:36 PM, Fuchs Ira wrote:
>>
>>> I was wondering why the following doesn't work:
>>>
>>>> a=c(1,2)
>>>> names(a)=c("one","two")
>>>> a
>>> one two
>>> 1 2
>>>>
>>>> names(a[2])
>>> [1] "two"
>>>>
>>>> names(a[2])="too"
>>>> names(a)
>>> [1] "one" "two"
>>>> a
>>> one two
>>> 1 2
>>>
>>> I must not be understanding some basic concept here.
>>> Why doesn't the 2nd name change to "too"?
>>
>> I cannot tell you why, perhaps you are not actually working with the
>> names of a, but I can show you that:
>>
>>> names(a)[2] <- "too"
>>> a[2]
>> too
>> 2
>>> a
>> one too
>> 1 2
>>
>> And this is seen as well in the help page examples. The help page
>> also
>> says the following, which I cannot understand:
>>
>> It is possible to update just part of the names attribute via the
>> general rules: see the examples. This works because the expression
>> there is evaluated as z <- "names<-"(z, "[<-"(names(z), 3, "c2")).
>>
>
> the following:
>
> names(a[2]) = 'foo'
>
> has (partially) a functional flavour, in that you assign to the names
> of
> a *copy* of a part of a, while
>
> names(a)[2] = 'foo'
>
> does not have the flavour, in that you assign to the names of a; it
> seems, according to the man page you quote, to be equivalent to:
>
> a = 'names<-'(a, '[<-.'(names(a), 2, 'foo'))
>
> which proceeds as follows:
>
> tmp1 = names(a)
> # get a copy of the names of a, no effect on a
>
> tmp2 = '[<-'(tmp1, 2, 'foo')
> # get a copy of tmp1 with the second element replaced with 'foo'
> # no effect on either a or tmp1
>
> tmp3 = 'names<-'(a, tmp2)
> # get a copy of a with its names replaced with tmp2
> # no effect on either a, tmp1, or tmp2
>
> a = tmp3
> # backassign the result to a
>
> vQ
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list