我正在尝试使用RCpp向数据框中添加新列。
在下面的代码中,我想向数据框df中添加一个"result"列。但是运行代码后,数据集中没有"result"列。你能告诉我代码哪里出了问题吗?
R文件调用AddNewCol()函数。
library(Rcpp)
sourceCpp('AddNewCol.cpp')
AddNewCol( df ,"result")
AddNewCol.cpp
#include <Rcpp.h>
#include<math.h>
using namespace Rcpp;
// [[Rcpp::export]]
void AddNewCol(DataFrame& df, std::string new_var) {
int maxRow = df.nrows();
NumericVector vec_x = df["x"];
NumericVector vec_y = df["y"];
NumericVector resultvec = NumericVector(maxRow);
for( int i = 0 ; i < maxRow; i++ ){
resultvec[i] = vec_x[i] * pow( vec_y[i] , 2 );
}
df[new_var] = resultvec;
}
data.table
正在做什么。 - Ralf StubnerDataFrame&
通常意味着“按引用调用”,但在向数据框添加列时,它会悄悄地进行复制,因为它仅是向量列表,无法调整大小。然而,他们没有解释为什么在这种情况下const
限定符有帮助。 - nalzok