我在Hadley Wickham的书中读到,RObjects应该在R的C API中声明为S表达式(SEXP):
SEXP x( SEXP a, SEXP b {
}
但是,在Rcpp中,这种必要性似乎已经结束。换句话说,应使用某些已定义的数据类型声明函数,例如:
NumericVector x(NumericVector a, NumericVector b) {
}
在Rcpp的上下文中是否有SEXP声明仍然有用的示例?
答案 0 :(得分:4)
当然是 ,因为所有内容都与SEXP
进行了互译。在某些情况下,我们选择保留SEXP
。
一个“经典”示例是run-time switching on type(其中显示了List
,但是您可以使用单个SEXP
来完成此操作)。其他示例是as<>
和wrap()
转换器。
还有...当然是用户选择保留SEXP
的代码。您可以在Rcpp Gallery上搜索更多示例,和/或当然也可以在大约2000个问题中搜索Rcpp。