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

使用lapply处理emm_list对象时丢失元素类的问题

emmeans包中emm_list对象使用lapply获取元素类的异常问题

问题现象

有一个对象列表tmp,单独遍历打印每个元素的类时,结果显示所有元素都是emmeans包的emmGrid类:

> for (i in 1:2) print(class(tmp[[i]]))
[1] "emmGrid"
attr(,"package")
[1] "emmeans"
[1] "emmGrid"
attr(,"package")
[1] "emmeans"

但使用lapply(tmp, class)获取元素类时,返回结果却显示元素类为list:

> lapply(tmp, class)
$emmeans
[1] "list"
$contrasts
[1] "list"

原因分析

经排查,该异常与tmp的类直接相关:tmp的类为emm_list,同时继承自list类型:

> class(tmp)
[1] "emm_list" "list"    

emm_list类对lapply的处理逻辑做了重载,导致直接调用lapply时无法正确识别元素的原始类。

解决方法

将tmp转为纯list类型后,再使用lapply即可正常获取元素的emmGrid类:

> t2 <- tmp
> class(t2) <- "list"
> lapply(t2, class)
$emmeans
[1] "emmGrid"
attr(,"package")
[1] "emmeans"

$contrasts
[1] "emmGrid"
attr(,"package")
[1] "emmeans"

复现代码

library(emmeans)
pigs.lm <- lm(conc ~ source + factor(percent), data = pigs)
tmp <- emmeans(pigs.lm, pairwise ~ source)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:03:23