[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