[R] How to make attributes persist after indexing?

Gabor Grothendieck ggrothendieck at gmail.com
Wed May 24 17:31:08 CEST 2006


You could create your own child class with its own [ method.

"[.myfactor" <- function(x, ...) {
       attr <- attributes(x)
       x <- NextMethod("[")
       attributes(x) <- attr
       x
}

gx <- structure(fx, class = c("myfactor", class(fx)))
attributes(gx[1])


On 5/24/06, Heinz Tuechler <tuechler at gmx.at> wrote:
> Dear All!
>
> For descriptive purposes I would like to add attributes to objects. These
> attributes should be kept, even if by indexing only part of the object is
> used.
> I noted that some attributes like levels and class of a factor exist also
> after indexing, while others, like comment or label vanish.
> Is there a way to make an arbitrary attribute to be kept after indexing?
> This would be especially useful when indexing a data.frame.
>
> ## example for loss of attributes
> fx <- factor(1:5, ordered=TRUE)
> attr(fx, 'comment') <- 'Comment for fx'
> attr(fx, 'label') <- 'Label for fx'
> attr(fx, 'testattribute') <- 'just for fun'
> attributes(fx)          # all attributes are shown
> attributes(fx[])        # all attributes are shown
> attributes(fx[1:5])     # only levels and class are shown
> attributes(fx[1])       # only levels and class are shown
>
> Thanks,
>
> Heinz Tüchler
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>



More information about the R-help mailing list