[R] Assigning to a vector while keeping the attributes
David Winsemius
dwinsemius at comcast.net
Mon Feb 9 15:54:19 CET 2009
Not sure what "a" really is. It's not a vector or a list according to
the R interpreter.
> a <- structure(1:3,x=3)
> mode(a)
[1] "numeric"
> is.vector(a)
[1] FALSE
> is.list(a)
[1] FALSE
Experimentation shows that simple indexing provides the functionality
you request while append does not.
> a[4] <- 10
> a
[1] 1 2 3 10
attr(,"x")
[1] 3
> a <-append(a, 20)
> a
[1] 1 2 3 10 20
# appears to have now coerced it to a vector
> a
[1] 1 2 3 10 20
> is.vector(a)
[1] TRUE
--
David Winsemius
On Feb 9, 2009, at 7:09 AM, Alon Wasserman wrote:
> Hi,
> I would like to know how to assign values to a whole vector while
> keeping
> its attributes. For example, say I have
> a <- structure(1:3,x=3)
> and I want to change the values to 2:4. If I do, a <- 2:4, the
> attribute x
> will be lost. I have a workaround for this case, which is to use
> subset
> assignment
> a[1:3] <- 2:4.
> However, what if I want to also change the length of a? Then this
> workaround
> doesn't work and also assigning into length(a) drops the attributes.
> More
> severe workarounds (such as keeping the attributes and then
> reassigning
> them) work, but if there's a simple solution, I'd be happy to use it.
> Thanks,
> Alon
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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