我正在使用C数组,我需要在代码中的某个时刻将它们转换为Rcpp::NumericVector
。我尝试了以下代码,但它抛出了一个错误(无法从double [5]转换为' SEXP')。从C数组转换为NumericVector
的正确方法是什么?
library(Rcpp)
cppFunction(
'
NumericVector fun() {
double data[5] = {1.0, 2.0. 1.0, 2.0, 1.0};
return as<NumericVector>(data);
}
')
答案 0 :(得分:5)
我知道有两种方法可以做到:
1:范围构造函数
getSomething({
"users_id": [1, 2, 3, 18, 24],
"data_chat_timeread": [0, 0, 0, 0, 0],
"data_chat_timecurrent": [100, 0, 0, 0, 0],
"data_chat_counter": [4, 0, 0, 0, 0],
"data_todo_counter": [2, 0, 0, 0, 0]
}, 18, "users_id", "data_todo_counter");
2:构建一个STL向量,换行SEXP,最后换行cppFunction('
NumericVector fun() {
double data[5] = {1.0,2.0,1.0,2.0,1.0};
return NumericVector(data,data+sizeof(data)/sizeof(*data));
}
');
fun();
## [1] 1 2 1 2 1
NumericVector