簡體   English   中英

當Rcpp作為參數從R傳遞時,如何訪問Rcpp中data.frame的因子級別?

[英]How can I access the levels of the factors of a data.frame in Rcpp when it is passed as an argument from R?

我有以下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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM