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

在R语言中从MatchBalance输出列表提取SMD值

从MatchBalance列表中提取SMD值的解决方案

嘿,我懂你花了好几个小时从MatchBalance的结果里抠SMD值的痛苦!这就给你俩简单直接的方法,分分钟搞定这个事儿👇

首先先理清楚你提供的match_balance结构:它是一个包含BeforeMatching子列表的对象,里面每个元素都是balanceUV类,我们要的SMD就是每个元素里的sdiff字段。

方法1:基础R实现(无需额外包)

先把BeforeMatching部分单独提出来,再用sapply批量提取每个元素的sdiff:

# 先取出BeforeMatching的子列表
before_match <- match_balance$BeforeMatching

# 提取所有sdiff值
smd_results <- sapply(before_match, function(uv_obj) uv_obj$sdiff)

# 整理成更易读的数据框
smd_df <- data.frame(
  变量序号 = paste0("变量", 1:length(smd_results)),
  SMD值 = smd_results
)

# 查看结果
print(smd_df)

运行后你会得到一个清晰的表格,每个变量对应的SMD值一目了然。

方法2:Tidyverse风格(更简洁)

如果你平时用tidyverse工具链,用purrr的map_dfr可以一步搞定,还能自动整理成数据框:

library(purrr)
library(dplyr)

# 提取并整理成tidy格式的数据框
smd_tidy <- map_dfr(
  .x = match_balance$BeforeMatching,
  .f = ~ tibble(SMD = .x$sdiff),
  .id = "变量序号"
)

# 查看结果
print(smd_tidy)

额外提示

如果你的match_balance里还有AfterMatching部分,只需要把代码里的match_balance$BeforeMatching换成match_balance$AfterMatching,就能提取匹配后的SMD值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:49:02