Hi, I was stumped by this. The two S4 objects below looked exactly the same:
> a1 An object of class "A" Slot "aa": integer(0) > a2 An object of class "A" Slot "aa": integer(0) > str(a1) Formal class 'A' [package ".GlobalEnv"] with 1 slots ..@ aa: int(0) > str(a2) Formal class 'A' [package ".GlobalEnv"] with 1 slots ..@ aa: int(0) But they were not identical: > identical(a1,a2) [1] FALSE Then I found that one had a "names" attribute but not the other: > names(attributes(a1)) [1] "aa" "class" "names" > names(attributes(a2)) [1] "aa" "class" > names(a1) NULL > names(a2) NULL Which explained why they were not reported as identical. After tracking the history of 'a1', I found that it was created with something like: > setClass("A", representation(aa="integer")) [1] "A" > a1 <- new("A") > names(a1) <- "K" > names(a1) NULL So it seems that, by default (i.e. in the absence of a specialized method), the `names<-` primitive is adding a "names" attribute to the object. Could this behaviour be modified so it doesn't alter the object? Thanks, H. -- Hervé Pagès Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpa...@fhcrc.org Phone: (206) 667-5791 Fax: (206) 667-1319 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel