0

我使用Rbdiag中包中的函数Matrix生成对角矩阵,然后将结果矩阵(称为mat)传递给自写的函数,但由于以下错误,R 无法执行:

Error: invalid mode (S4) to pass to Fortran (arg 1)

我查了一下isS4(mat),是的TRUE。因此,我想有一种方法可以以某种方式转换 S4 对象以便传递给函数。任何建议将不胜感激!

更新:我使用以下代码构建块对角矩阵:

grp.ids <- as.factor(c(rep(1,8), rep(2,4), rep(3,2)))
x <- model.matrix(~grp.ids)
X <- do.call(bdiag, replicate(238, x, simplify=FALSE))

有没有其他方法可以在不使用该bdiag函数的情况下获得 S3 矩阵?谢谢!

4

1 回答 1

3

Only the .Call() interface can pass full R objects down to C or C++ code, see Section 5 of the Writing R Extensions manual. With .Fortran() and .C() you are limited to basic vectors of int, double, ... and their corresponding Fortran types.

于 2012-10-24T21:05:25.540 回答