R语言使用mapply生成列联表时不显示原始变量名如何解决
问题原因
你当前的输出维度名显示为x和y,是因为table()函数默认会使用传入的参数名作为维度名称,而你自定义匿名函数的形参就是x和y,同时mapply遍历数据框列时默认不会把对应列名传入函数,导致无法匹配原始变量名。
解决方案
调整mapply的传入参数,同时传入dt1的列数据和列名,通过table()的dnn参数手动指定维度名即可,修改后代码如下:
set.seed(123) ## for sake of reproducibility n <- 10 dat <- data.frame(balance=factor(paste("DM", 1:n)), credit_history=sample(c("repaid", "critical"), 10, replace = TRUE), purpose=sample(c("yes", "no"), 10, replace = TRUE), employment_rate=sample(c("0-1 yrs", "1-4 yrs", ">4 yrs"), 10, replace = TRUE), personal_status=sample(c("married", "single"), 10, replace=TRUE), other_debtors=sample(c("guarantor", "none"), 10, replace= TRUE), default=sample(c("yes", "no"), 10, replace = TRUE)) dt1 <- dat[ , c(1:6)] dt2 <- dat[ , "default"] # 修改后的mapply调用 mapply(function(x, col_name, y) { table(x, y, dnn = c(col_name, "default")) }, dt1, colnames(dt1), MoreArgs = list(y = dt2))
效果说明
修改后每个生成的交叉表都会自动匹配原始列名,比如balance和default的交叉表维度名会直接显示为balance和default,不再显示x、y。
内容的提问来源于stack exchange,提问作者tucomax
相关产品推荐
相关产品推荐

