假设我有一个由五列组成的数据框(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吗?