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

mids类多重插补数据集多变量密度图绘制报错排查

解决mice多重插补数据集密度图绘制的报错问题

嘿,我来帮你搞定这个报错!你遇到的Error in [.data.frame(r, , xvar) : undefined columns selected,问题出在densityplot对公式参数的解析上。当你用~vars[[x]]的时候,函数会误以为你要找一个叫vars[[x]]的列,但你的插补数据集里根本没有这个列,自然就报错啦。

给你两种简单的解决办法,随便选一种都能正常出图:

方法一:动态构造公式字符串

直接把变量名拼接成densityplot能识别的公式格式,再转成公式对象就行:

library(mice)
library(purrr)

# 生成插补数据集
imp <- mice(airquality, seed = 123, m = 3, print = FALSE)
vars <- c('Ozone', 'Solar.R')

# 循环绘制每个变量的密度图
map(vars, function(var) {
  # 拼接成~变量名的公式字符串,再转成公式对象
  densityplot(imp, as.formula(paste0("~", var)))
})

方法二:用tidyverse风格的符号注入(更优雅)

如果你平时常用tidyverse工具,可以用rlang包的符号转换功能,让代码更简洁:

library(mice)
library(purrr)
library(rlang)

imp <- mice(airquality, seed = 123, m = 3, print = FALSE)
vars <- c('Ozone', 'Solar.R')

map(vars, function(var) {
  # 把字符串转成符号,再用!!注入到公式里
  densityplot(imp, ~!!sym(var))
})

另外偷偷说一句:其实densityplot支持一次性绘制多个变量的密度图,不用写循环也能搞定,代码更简单:

densityplot(imp, ~Ozone + Solar.R)

这样每个变量的不同插补结果会用不同颜色区分,对比起来更直观哦!

内容的提问来源于stack exchange,提问作者Kelsey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:54:03