You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:06:02