C数组到Rcpp NumericVector

时间:2016-11-06 07:02:39

标签: c arrays r rcpp

我正在使用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);
}
')

1 个答案:

答案 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