Hello Everyone: I'm hoping to get some suggestions on this problem i'm having with subsetting on an R object i've created. I would really appreciate any advice.
I've created this simple S3 class: >str(ans) Class 'myObj' atomic [1:45000] 0.0428 0.0423 0.0554 0.0338 0.0345 ... ..- attr(*, "Size")= int 10 ..- attr(*, "Region")= chr "EXON" I create instances of this class by doing something like this: ans <- structure(x,class="myObj", Size=length(i), Region=attr(x,"UTR")) where x is a vector of reals. When I subset it via ans[c(2,3,4),c(2,4,8)] I get the result I want (my subsetting works as if its a two dimensional object for reasons I'll omit since I don't think its pertinent to the problem). I've written my subsetting code in C, so my R function is basically just a wrapper function to a .Call. "[.myObj" <- function(x, i=NA, j=NA, ...){ .. do some parameter checking... .. then pass the data on to my C routine... ans <- .Call("foo",as.numeric(x),as.integer(i),as.integer(j)) ans <- structure(ans,class="myObj", Size=length(i), Region=attr(x,"UTR")) return(ans) } One of my main goals is to do this subsetting quickly (which is why i do the subsetting in C) However, when I look at my results returned from summaryRprof I see these 3 lines that are troubling: $by.total total.time total.pct self.time self.pct "[" 41.54 50.3 0.22 0.3 "[.myObj" 41.32 50.0 0.32 0.4 "as.numeric" 38.58 46.7 38.58 46.7 these times are much much longer than they should be. I'm not sure why "[" is called twice. I'm guessing that its being called once for the myObj class, and once for the underlying atomic structure of a vector of reals. I've been looking at this issue for a while and trying to mimic other subsetting packages but with no luck. I think the solution involves understanding NextMethod("[") but then again I'm not so sure. Again, I really appreciate any comments or advice! Thanks a bunch, Greg W. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.