我正在开发一个带有低级C代码的R包。假设我的Exiting
.rvm/gems/ruby-2.2.0/gems/puma-2.14.0/lib/puma/binder.rb:233:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError)
代码中有以下功能。
C
我需要知道R对象SEXP myFun(SEXP obj)
是常规obj
还是matrix
(使用R包big.matrix
),以便我可以调用不同的函数进行计算。
这可能吗?我怎么知道bigmemory
的课程类型?
答案 0 :(得分:2)
如果您对C ++(而不是C)持开放态度,那么我们会为您发送两个Rcpp Gallery帖子:
狭隘的答案可能正在测试S4类中的外部指针SEXP
......但是我不再那么简单了,因为Rcpp让事情变得如此简单。
答案 1 :(得分:2)
您可以使用inherits功能:
#include <R.h>
#include <Rinternals.h>
SEXP myFun(SEXP obj) {
if (inherits(obj, "big.memory")) {
// do stuff
}
}