Re: [R] How to make attributes persist after indexing?

From: Marc Schwartz (via MN) <>
Date: Thu 25 May 2006 - 01:30:57 EST

On Wed, 2006-05-24 at 17:20 +0100, Heinz Tuechler 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

"Non-standard" attributes do not survive the use of "[". You could create a new class and subset method for the objects where you require this type of functionality.

Frank Harrell has done that in the Hmisc package to support the use of the labeling attributes, which in turn are used by some of his functions such as latex(). You might want to review what he has done in ?label where the "[.labelled" method has been added.

Alternatively, you could create your own function to save the attributes, do the subsetting and then restore the attributes to the resultant object.

HTH, Marc Schwartz mailing list PLEASE do read the posting guide! Received on Thu May 25 01:58:49 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 25 May 2006 - 04:10:42 EST.

Mailing list information is available at Please read the posting guide before posting to the list.