[R] assigning the class of an object

Rolf Turner rolf.turner at xtra.co.nz
Tue Sep 10 23:49:36 CEST 2013


On 09/11/13 09:16, peter dalgaard wrote:
> On Sep 10, 2013, at 22:56 , Rolf Turner wrote:
>
>> On 09/11/13 07:54, Davis, Brian wrote:
>>> I'm sure this has been answered before but alas my googlefoo is not that strong.
>>>
>>> I have several .Rdata files with a single object in them.  I need to set the class of the object to "myClass".  Unfortunately, I don't know the name of the object beforehand.  Obviously I could ls() and get the name but as I have quite a few of these I'd like to do it programmatically.
>>>
>>>
>>> I thought something like this would work, but I get an error.
>>>
>>>> obj_name <- load("Robject.RData")   # get the name of the loaded object
>>>> class(get(obj_name)) <- "myClass"
>>> Error in class(get(obj_name)) <- " myClass " :
>>>    could not find function "get<-"
>>>
>>>
>>> So I guess the question is how do I set the class of an R object when I only have the object name as a character string?
>> (a) Actually, a wee experiment that I did indicates that your strategy actually *works* despite the error message!!!
>> That is, you wind up with an object, named by obj_name, with class "myClass". I don't understand this.  Perhaps
>> someone more knowledgeable than I will enlighten us both.
> It certainly won't work universally:
>
>> x <- 5
>> obj_name <- "x"
>> class(get(obj_name))<-"foo"
> Error in class(get(obj_name)) <- "foo" : could not find function "get<-"
>> x
> [1] 5
>
> so further details of your wee experiments need to be revealed.
>
Hmmm.  I did:

x <- 42
save(x,file="Robject.RData")
rm(list=ls())
obj_name <- load("Robject.RData")
class(get(obj_name)) <- "myClass"
x

and got:

[1] 42
attr(,"class")
[1] "myClass"

(also got the familiar error message).

When I did it your way --- without the saving and loading bit --- I got
the same result that you did.  I.e. assigning the class that way did *not*
work (as one would expect it wouldn't!).

This is weird, n'est-ce pas?

Here is my

 > sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
[1] C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods base

other attached packages:
[1] misc_0.0-15

     cheers,

     Rolf



More information about the R-help mailing list