gpt4 book ai didi

r - 当 Rcpp 作为 R 的参数传递时,如何访问 Rcpp 中 data.frame 的因子水平?

转载 作者:行者123 更新时间:2023-12-01 10:27:29 27 4
gpt4 key购买 nike

我有以下 data.frame df1 和我在 R 中创建的因子 fac1 并将其作为参数传递给 Rcpp 函数。请求的任务是获取 Rcpp 函数内的所有因子水平并使用它们。

fac1 <- factor(x = sample(x = 1:5,size = 100,replace = T),labels =  paste0("D",1:5))
var1 <- sample(x = 1:20,size = 100,replace = T)
fac2 <- factor(x = sample(x = 1:12,size = 100,replace = T),labels = paste0("M",1:12))
df1 <- data.frame(fac1,var1,fac2)

最佳答案

经过一番研究,我找到了解决方案并分享给大家。
Rf_isFactor 检查 data.frame 列是否是一个因素。
相应 IntegerVector (tempVec) 的 levels 属性返回因子水平。

cppFunction("void GetFactorLevels(DataFrame df1){
CharacterVector varNames = df1.names();
for(int i=0; i<df1.length();i++) {
if(Rf_isFactor(df1[i])==1){
IntegerVector tempVec=df1[i];
CharacterVector factorLevels =tempVec.attr(\"levels\");
Rcout<<varNames[i]<<\": \"<<factorLevels<<std::endl;
}
}
}")

> GetFactorLevels(df1)
fac1: "D1" "D2" "D3" "D4" "D5"
fac2: "M1" "M2" "M3" "M4" "M5" "M6" "M7" "M8" "M9" "M10" "M11" "M12"

关于r - 当 Rcpp 作为 R 的参数传递时,如何访问 Rcpp 中 data.frame 的因子水平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46323398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com