Dear Martin, Thanks a lot for your reply. I do have a namespace and it does seem to be a namespace problem. But this time, it's getting even stranger:
My package name is ChainLadder: > library(ChainLadder) > sessionInfo() R version 2.10.1 (2009-12-14) i386-pc-mingw32 locale: [1] LC_COLLATE=English_United States.1252 [2] LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.1252 attached base packages: [1] splines stats graphics grDevices utils datasets methods [8] base other attached packages: [1] ChainLadder_0.1.3-3 systemfit_1.1-4 lmtest_0.9-26 [4] zoo_1.6-2 car_1.2-16 Matrix_0.999375-33 [7] lattice_0.17-26 Hmisc_3.7-0 survival_2.35-7 loaded via a namespace (and not attached): [1] cluster_1.12.1 grid_2.10.1 tools_2.10.1 Then I called the main function to create an object "uni2" of class "MultiChainLadder". > uni2 <- MultiChainLadder(list(GenIns), + fit.method="OLS", + extrap=TRUE, + model="MCL") > > class(uni2) [1] "MultiChainLadder" attr(,"package") [1] "ChainLadder" The summary function defined for this class "MultiChainLadder" works as desired: > showMethods(summary) Function: summary (package base) object="ANY" object="MultiChainLadder" object="sparseMatrix" > summary(uni2) $`Summary Statistics for the Input Triangle` Latest Dev.To.Date Ultimate IBNR S.E CV 2 5339085 0.98258397 5433719 94633.81 75535.04 0.7981823 3 4909315 0.91271120 5378826 469511.29 121698.56 0.2592026 4 4588268 0.86605315 5297906 709637.82 133548.85 0.1881930 5 3873311 0.79727292 4858200 984888.64 261406.45 0.2654173 However, problems come when I call the "show" function defined for this class, which is essentially the same as the "summary" function, since the default "summary" for class "ANY" is called, not my new method: > getMethod(show,signature="MultiChainLadder") Method Definition: function (object) { summary(object) } <environment: namespace:ChainLadder> Signatures: object target "MultiChainLadder" defined "MultiChainLadder" > show(uni2) Length Class Mode 1 MultiChainLadder S4 I can't figure out why the call of "summary" within "show" failed. And what is even stranger is that although the showMethods(summary) indicates a method is defined for "MultiChainLadder", I could not find the "summary" function in the namespace "ChainLadder": > ChainLadder::summary Error: 'summary' is not an exported object from 'namespace:ChainLadder' > objects(2) [1] "ABC" "as.triangle" "auto" [4] "BootChainLadder" "chainladder" "coef" [7] "cum2incr" "fitted" "fitted.values" [10] "GenIns" "GenInsLong" "getLatestCumulative" [13] "incr2cum" "Join2Fits" "JoinFitMse" [16] "liab" "M3IR5" "MackChainLadder" [19] "MCLincurred" "MCLpaid" "Mortgage" [22] "Mse" "MultiChainLadder" "MunichChainLadder" [25] "plot" "predict" "qincurred" [28] "qpaid" "RAA" "residCov" [31] "residuals" "rstandard" "vcov" I know this is a namespace issue, but I do not know how to fix this. The following is a part of the namespace file, but you can see that I did export the "summary" method in "exportMethods". What did I miss here? Thanks a lot for your help. export(MackChainLadder, MunichChainLadder, BootChainLadder, MultiChainLadder) export(Join2Fits, JoinFitMse, Mse, residCov) importFrom(stats, quantile, predict, coef, vcov, residuals, fitted, fitted.values, rstandard) importFrom(methods, show, coerce) importFrom(graphics, plot) #Classes exportClasses(triangles, MultiChainLadder, MultiChainLadderFit, MCLFit, GMCLFit, MultiChainLadderMse) #Methods S3method(plot, MackChainLadder) S3method(plot, MunichChainLadder) S3method(summary, MunichChainLadder) S3method(summary, BootChainLadder) exportMethods(predict, Mse, summary, show, coerce, "[", "$", "[[", names, coef, vcov, residCov, residuals, rstandard, fitted, fitted.values, plot) Wayne (Yanwei) Zhang Statistical Research >CNA -----Original Message----- From: Martin Morgan [mailto:mtmor...@fhcrc.org] Sent: Monday, March 01, 2010 5:10 PM To: Zhang,Yanwei Cc: r-help@r-project.org Subject: Re: [R] Method dispatch On 03/01/2010 01:31 PM, Zhang,Yanwei wrote: > Dear all, > > In a package, I defined a method for "summary" using setMethod(summary, signature="abc") for my class "abc", but when the package is loaded, the function "summary(x)" where x is of class "abc" seems to have called the default summary function for "ANY" class. Shouldn't it call the method I have defined? How could I get around with that? Thanks. Hi Wayne -- It's hard to tell from what you've written, but this and your earlier question on 'S4 issues' sounds like a NAMESPACE problem. Are you using a name space? If so, provide additional detail. Also, verify that you are only loading your package and not another, e.g., one with a 'summary' generic that is being found before yours. Probably your best bet is to simplify as much as possible -- I have a single file in 'pkgA/R', with setClass("A", "numeric") setMethod("summary", "A", function(object, ...) "A") > library(pkgA) > summary(new("A")) [1] "A" > sessionInfo() R version 2.10.1 Patched (2010-02-23 r51168) x86_64-unknown-linux-gnu locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=C LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] pkgA_1.0 Martin > > > Wayne (Yanwei) Zhang > Statistical Research > CNA > > > > > > NOTICE: This e-mail message, including any attachments and appended > messages, is for the sole use of the intended recipients and may contain > confidential and legally privileged information. > If you are not the intended recipient, any review, dissemination, > distribution, copying, storage or other use of all or any portion of this > message is strictly prohibited. > If you received this message in error, please immediately notify the sender > by reply e-mail and delete this message in its entirety. > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. -- Martin Morgan Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793 ______________________________________________ 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.