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

在emmeans调用中使用变量名替代预测因子名的问题

问题:emmeans的at参数中能否用变量替代预测因子名?

假设已定义变量var,其值为模型中的预测因子名"disp",代码如下:

library(emmeans)
var <- "disp"
lm.mod <- lm(mpg ~ disp + hp, data=mtcars)

尝试在emmeans的at参数中使用变量var时,该参数被忽略:

emmeans(lm.mod, var, at=list(var=c(100,200,300,400)))

得到的结果未按指定值计算;而直接使用disp时,能得到预期输出:

emmeans(lm.mod, var, at=list(disp=c(100,200,300,400)))

请问能否在emmeans的at参数中用变量替代实际预测因子名?

解决方案

可以实现,问题核心是直接使用list(var=...)时,列表的名称是字符串"var",而非变量var存储的"disp"。需要动态给列表命名,以下是两种常用方法:

方法1:使用setNames函数

通过setNames将向量的名称设置为变量var的值,再传入at参数:

emmeans(lm.mod, var, at=setNames(list(c(100,200,300,400)), var))

方法2:先构建动态命名的列表

先创建空列表,再通过下标赋值的方式用变量指定列表名:

at_list <- list()
at_list[[var]] <- c(100,200,300,400)
emmeans(lm.mod, var, at=at_list)

两种方法都能让at参数正确识别目标预测因子disp,按指定值计算边际均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:32:39