我有一个 RCpp 代码,在代码的一部分中我试图将 DataFrame 转换为 Matrix。 DataFrame 仅包含数字(没有字符串或日期)。
以下代码有效:
//[[Rcpp::export]]
NumericMatrix testDFtoNM1(DataFrame x) {
int nRows=x.nrows();
NumericMatrix y(nRows,x.size());
for (int i=0; i<x.size();i++) {
y(_,i)=NumericVector(x[i]);
}
return y;
}
我想知道是否有替代方法(即相当于as.matrix
在 R 中)在 RCpp 中执行相同的操作,类似于下面的代码(不起作用):
//[[Rcpp::export]]
NumericMatrix testDFtoNM(DataFrame x) {
NumericMatrix y(x);
return y;
}
* EDIT *
感谢您的回答。正如 Dirk 所建议的,C++ 代码比这两个答案中的任何一个快大约 24 倍Function
版本比之前版本快 2%internal::convert_using_rfunction
版本。
我最初是在 RCpp 中寻找答案而不打电话给 R。当我发布我的问题时应该明确这一点。
与 Gabor 的版本类似,您可以执行以下操作:
#include <Rcpp.h>
using namespace Rcpp ;
//[[Rcpp::export]]
NumericMatrix testDFtoNM(DataFrame x) {
NumericMatrix y = internal::convert_using_rfunction(x, "as.matrix");
return y;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)