首页 > 解决方案 > 如何在 R 中的 emmeans() 命令中评估字符串变量作为因子?

问题描述

我想将具有自定义因子的变量从方差分析模型分配给 emmeans() 语句。在这里,我使用 R 中的 oranges 数据集来使代码可重现。这是我的模型以及我通常如何计算因子存储的 emmmeans:

library(emmeans) 
oranges$store<-as.factor(oranges$store)
model <- lm (sales1 ~ 1 + price1 + store ,data=oranges)
means<-emmeans(model, pairwise  ~ store, adjust="tukey")

现在我想分配一个变量(lsmeanfact)来定义计算lsmeans的因素。

lsmeanfact<-"store"

但是,当我想在 emmeans() 函数中评估这个变量时,它返回一个错误,它基本上没有找到变量 lsmeanfact,所以它不会评估这个变量。

means<-emmeans(model, pairwise  ~ eval(parse(lsmeanfact)), adjust="tukey")
Error in emmeans(model, pairwise ~ eval(parse(lsmeanfact)), adjust = "tukey") : 
  No variable named lsmeanfact in the reference grid

我应该如何更改我的代码以能够评估变量 lsmeanfact 以便正确计算“plantcode”的 lsmeans?

标签: revalemmeans

解决方案


你可以利用reformulate函数。

library(emmeans)
lsmeanfact<-"store"

means <- emmeans(model, reformulate(lsmeanfact, 'pairwise'), adjust="tukey")

formula或者用/构造一个公式as.formula

means <- emmeans(model, formula(paste('pairwise', lsmeanfact, sep = '~')), adjust="tukey")

这里既reformulate(lsmeanfact, 'pairwise')formula(paste('pairwise', lsmeanfact, sep = '~'))返回pairwise ~ store


推荐阅读