R中的局部变量名和用户定义的函数

时间:2017-08-10 18:33:30

标签: r

假设我有一个由五列组成的数据框(example_df):col1,col2,col3,col4和col5。我正在尝试创建一个函数,它接受example_df及其中一个列来构建一个新的数据框,显示每个col1,col4和var组合的频率,如下所示:

summarize_data <- function (df, var) {  
    var_combination <- data.frame()   
    temp <- na.omit(unique(df))  
    unique_var <- unique(temp$var)  
    for (i in 1:length(unique_var)){  
        temp2 <- temp[temp$var == unique_var[i], ]  
        unique_col1 <- na.omit(unique(temp2$col1))    
        for (j in 1:length(unique_col1)){      
            temp3 <- temp2[temp2$col1 == unique_col1[j], ]     
            temp3 <- temp3[!is.na(temp3$col3), ]      
            var_combination <- rbind(var_combination, 
                                     cbind(data.frame(table(temp3$col4)), 
                                           var = unique_var[i], 
                                           "Col1" = unique_col1[j]))  
        }
    } 
}

因此,如果我要调用summarize_data(example_df,col2),我希望R处理它,以便它将生成col2_combination和unique_col2作为局部变量,并将temp $ var识别为temp $ col2。简而言之,只要R看到var,它就会用col2替换它。在最终数据框col2_combination中,它(理想情况下)将列名称为Var1,Freq(两者都由R通过表语句生成),col2和col1。

有没有办法在summarize_data中生成局部变量,使其部分名称直接来自第二个参数? (col2_combination,unique_col2)在这种情况下,R甚至可以将temp $ var理解为temp $ col2吗?

0 个答案:

没有答案