[Rd] R CMD check does not recognize S4 functions inside other functions?

Martin Maechler maechler at stat.math.ethz.ch
Fri Aug 28 09:58:50 CEST 2009


>>>>> "GH" == Giles Hooker <gjh27 at cornell.edu>
>>>>>     on Thu, 27 Aug 2009 21:12:48 -0400 writes:

    GH> I am developing a new R package and am now checking it for submission to
    GH> CRAN.

    GH> The some functions in the package make use of the sparse matrix routines
    GH> in the package 'Matrix'.

    GH> When these are loaded in R, they create no problems.

    GH> However, when running R CMD check, I run into the following error in 
    GH> executing the examples in a .rd file:

    >> DD = Matrix(diag(1,200),sparse=TRUE)
    >> tDD = t(DD)

{{well, the transpose of a diagonal matrix, really ??}}

Just a remark:   For larger values of n=200,
it would be more efficient (and elegant) to directly use

   DD <- Diagonal(200)

See   ?Diagonal,  and e.g.,

  > Diagonal(4)
  4 x 4 diagonal matrix of class "ddiMatrix"
       [,1] [,2] [,3] [,4]
  [1,]    1    .    .    .
  [2,]    .    1    .    .
  [3,]    .    .    1    .
  [4,]    .    .    .    1
  > .symDiagonal(4)
  4 x 4 sparse Matrix of class "dsCMatrix"

  [1,] 1 . . .
  [2,] . 1 . .
  [3,] . . 1 .
  [4,] . . . 1





    >> 
    >> fres = FitMatchOpt(coefs=coefs,which=2,pars=pars,proc)
    GH> Error in t.default(DD) : argument is not a matrix
    GH> Calls: FitMatchOpt -> t -> t.default
    GH> Execution halted

    GH> The first two lines of the function FitMatchOpt are

    GH> DD = Matrix(diag(1,200),sparse=TRUE)
    GH> tDD = t(DD)

    GH> These were fine when given in the examples section of the .rd file 
    GH> directly. However, when defined within a function in the package, the 
    GH> lines cause an error.

How does your package "get Matrix"?

I'm sure there's some problem in requiring Matrix, in either
your DESCRIPTION or your NAMESPACE  (or a .First.library or ...)

Your DESCRIPTION should have

Depends: ...., Matrix
Imports: ...., Matrix

and your NAMESPACE  

either
   importFrom("Matrix", .....)# the things you need

or (if you use many things from the Matrix package, and/or
    in some way just *extend* it ...)

   import("Matrix")



Does that help?

Best regards,
Martin Maechler


    GH> Sparse matrices improve the computational efficiency of the routines I 
    GH> am developing and I would like to use them. But I'm not sure how I can 
    GH> get around this error.

    GH> Many thanks,

    GH> Giles Hooker

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



More information about the R-devel mailing list