Thanks for the clarification, Martin. Since I couldn't reproduce the example, I didn't get to see what was actually being returned (and was, admittedly, too lazy to dig through the help).
> library(NADA) > my.ex<-structure(list(TEC = c(0.21, 0.077, 0.06, 0.033, 0.014, 0.0072), LR = + c(0L, 0L, 1L, 0L, 1L, 0L)), .Names = c("TEC", "LR"), class = "data.frame", + row.names = c(NA, -6L)) > > with(my.ex, cenfit(TEC,LR)) Error in function (classes, fdef, mtable) : unable to find an inherited method for function ‘cenfit’ for signature ‘"numeric", "integer", "missing"’ Not that I'm worried about it not working, but it's a good idea to test reproducible examples on a clean session to ensure the best possible answers. Sarah On Thu, Nov 15, 2012 at 9:32 AM, Martin Morgan <mtmor...@fhcrc.org> wrote: > On 11/15/2012 06:10 AM, Sarah Goslee wrote: >> >> Hi, >> >> Your reproducible example isn't reproducible for me, as I get an error >> message. >> >> But regardless, the easiest thing to do is write your own wrapper, >> something like: >> >> mycenfit <- function(x, y) { >> result <- cenfit(x, y) >> c(result, sum = result$n * result$mean) >> } >> >> No need to change anything in the package itself. Incidentally, using >> attach() is generally a really bad idea. with() is much safer. >> >> Sarah >> >> On Thu, Nov 15, 2012 at 7:00 AM, maxbre <mbres...@arpa.veneto.it> wrote: >>> >>> I want to get access to the code of an S4 method in order to possibly >>> modify >>> a function to accomplish my particular needs: in my case the function in >>> is >>> cenfit() from the package NADA >>> >>> Now, given my reproducible example: >>> >>> my.ex<-structure(list(TEC = c(0.21, 0.077, 0.06, 0.033, 0.014, 0.0072), >>> LR = >>> c(0L, 0L, 1L, 0L, 1L, 0L)), .Names = c("TEC", "LR"), class = >>> "data.frame", >>> row.names = c(NA, -6L)) >>> >>> and the following few lines of code: >>> >>> library(“NADA) >>> >>> attach(my.ex) >>> >>> cenfit(TEC,LR) >>> >>> giving this output: >>> >>> n n.cen median mean sd >>> 6.00 2.00 0.033 0.058 0.083 > > > actually, cenfit() returns an object > >> xx = cenfit(my.ex$TEC, as.logical(my.ex$LR)) > > and what you're seeing is the result of the object's 'show' method > >> xx > n n.cen median mean sd > 6.00000000 2.00000000 0.03300000 0.05836667 0.08350178 > > You can see the body of the show method with > > selectMethod(show, class(xx)) > > and methods that are available to work on xx with > > showMethods(class=class(xx), where=search()) > > Sarah is right that you'd likely want to write your own function, using a > combination of available methods, e.g., > > censtats <- function(x) { > s = summary(x) > c(n = nrow(s), n.cen = nrow(s) - sum(s$n.event), median = median(x), > mean = mean(x)[["mean"]], sd = sd(x)) > } > > Martin > >>> >>> I would like to add one more result to the above, namely “sum”, very >>> simply >>> computed as the product of “n” times “mean” >>> >>> Do you think that is possible or convenient? >>> >>> I’ve been reading that editing a S4 methods needs particular attention as >>> by >>> using showMethods("cenfit") and then getMethod("cenfit"); in fact, I’ve >>> been >>> trying that but without much success (i.e. understanding of the >>> cumbersome >>> output) >>> >>> can anyone give me some help on how is probably better to proceed in >>> order >>> to get my new result? >>> >>> different alternative solutions or hints or advices are also more than >>> welcomed >>> (I’m pretty new on R and specially on the field of function handling and >>> customizing) >>> >>> all the best >>> >>> max >>> >>> >>> >> >> -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ 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.