I found a solution to this problem, but don't understand why it was necessary. In a clean workspace, I get:

> methods(as.array)
[1] as.array.default
> showMethods("as.array")

Function "as.array":
 <not a generic function>

So, I just added the generic definition to my package, making with warnings go away.

as.array <- function(x, ...)
        UseMethod("as.array")

as.array.loddsratio <- function (x, log=x$log, ...)
        drop(array(coef(x, log = log), dim = dim(x), dimnames=dimnames(x)))

Yet, help(as.array) says:

as.array is a generic function for coercing to arrays. The default method does so by attaching a dim attribute to it. It also attaches dimnames if x has names. Is this a documentation error?

> sessionInfo()
R version 2.11.1 (2010-05-31)
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] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] tools_2.11.1
>

On 12/9/2010 10:05 AM, Michael Friendly wrote:
I posted on this topic to r-help, but never got a sufficient answer, so
I'm reposting here.

[Env: R 2.11.1, Win Xp, using Eclipse/StatET]

In a package I'm working on, I want to create as.matrix() and as.array()
methods for a particular kind of
object (log odds ratios). These are returned in a loddsratio object as
the $coefficients component,
a vector, but really reflect an underlying (R-1)x(C-1)xstrata array,
whose attributes are contained in other components.

These are all properly declared in the NAMESPACE as S3 methods,

...
S3method(dim, loddsratio)
S3method(dimnames, loddsratio)
S3method(print, loddsratio)
S3method(vcov, loddsratio)
S3method(as.matrix, loddsratio)
S3method(as.array, loddsratio)

Yet, when I run R CMD check, R CMD build, etc. or even load the package,
I get the warning,

 > library(vcdExtra)
Loading required package: vcd
Loading required package: MASS
Loading required package: grid
Loading required package: colorspace
Loading required package: gnm
Warning message:
found an S4 version of ‘as.array’ so it has not been imported correctly

 > showMethods("as.array")
Function: as.array (package base)
x="ANY"
x="Matrix"

But as.array does show up as a method for my class:

 > methods(class="loddsratio")
[1] as.array.loddsratio* as.data.frame.loddsratio*
[3] as.matrix.loddsratio* coef.loddsratio*
[5] confint.loddsratio* dim.loddsratio*
[7] dimnames.loddsratio* print.loddsratio*
[9] vcov.loddsratio*

Non-visible functions are asterisked
 >

Is there some work-around so I can have an S3 as.array() method in my
package and avoid this warning?





--
Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to