R中的S4对象无法传递给Fortran

时间:2012-10-24 18:23:12

标签: r s4

我使用R中bdiag包中的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矩阵?谢谢!

1 个答案:

答案 0 :(得分:3)

只有.Call()接口可以将完整的R对象传递给C或C ++代码,请参阅“编写R扩展”手册的第5节。使用.Fortran().C(),您只能使用intdouble,...及其相应的Fortran类型的基本向量。