1

我正在开发一个带有低级 C 代码的 R 包。假设我的C代码中有以下功能。

SEXP myFun(SEXP obj)

我需要知道 R 对象obj是常规对象matrix还是big.matrix(使用 R 包bigmemory),以便我可以调用不同的函数进行计算。

这可能吗?我怎么知道的类类型obj

4

2 回答 2

2

如果您对 C++(而不是 C)持开放态度,那么我们为您准备了两个Rcpp Gallery帖子:

狭义的答案可能是在 S4 类中测试外部指针SEXP......但后来我真的不再做纯 C 语言了,因为 Rcpp 让事情变得容易多了。

于 2015-09-27T18:26:21.533 回答
2

您可以使用继承功能:

#include <R.h>
#include <Rinternals.h>

SEXP myFun(SEXP obj) {
    if (inherits(obj, "big.memory")) {
        // do stuff
    }
}
于 2015-09-28T18:37:15.023 回答