jjzjj

NumericVector

全部标签

c++ - 在 Rcpp 中实现应用功能

到目前为止,我一直在尝试在Rcpp中实现应用函数,代码如下所示//[[Rcpp::export]]NumericVectorapply(NumericMatrixx,intdim,Functionf){NumericVectoroutput;if(dim==1){for(inti=0;i但我在第6行和第11行收到错误“无法将SEXP转换为double赋值”。有没有办法将任意函数返回的值转换为double?应用函数也有一个糖函数。 最佳答案 apply没有糖功能.做你想做的最简单的方法是调用as,即:output[i]=as(f(x(

c++ - 如何使用 R 和 Rcpp 删除 NumericVector 中的元素以进行递归

我试图了解更多关于如何使用Rcpp包的R。所以我开始使用Rcpp测试基本的排序算法。我从HadleyWickham教程开始here.我通过这种方式成功地实现了插入排序:library(Rcpp)vetor1){insertionsortRC(vetor,n-1);aux=vetor[n-1];i=n-1;while(vetor[i-1]>aux&&i>=0){vetor[i]=vetor[i-1];i--;}vetor[i]=aux;}returnvetor;}")但是这个函数需要2个参数,然后我尝试这样:cppFunction("NumericVectorinsertionsortR

c++ - 从 NumericVector 填充 C++ 数组的更好习惯用法

我正在使用Rcpp来包装一个用类似C的C++编写(不是我)的算法(据我所知,没有STL,没有提升,什么都没有)。可以看到实现的算法here(我正在包装kmeans_w_03)。因此,我从R中传入一个numericvector,然后需要将其转换为一个double数组。目前我正在逐个元素地循环并从'tother'填充一个,像这样:SEXPtestfn(SEXPweightvec,SEXPcluster_num_k){Rcpp::NumericVectorweightR(weightvec);intpoint_num=weightR.size();doubleweight[point_num