从emmeans R包的emmGrid中提取元素

MYa*_*208 4 r extract emmeans

我不知道如何提取emmeanSE从列emmGridemmeans R包。下面给出了 MWE。

library(emmeans)
warp.lm <- lm(breaks ~ wool * tension, data = warpbreaks)
Test <- emmeans(warp.lm,  specs = "wool")

Test
wool   emmean       SE df lower.CL upper.CL
 A    31.03704 2.105459 48 26.80373 35.27035
 B    25.25926 2.105459 48 21.02595 29.49257

Results are averaged over the levels of: tension 
Confidence level used: 0.95 

class(Test)
[1] "emmGrid"
attr(,"package")
[1] "emmeans"
Run Code Online (Sandbox Code Playgroud)

Axe*_*man 6

summary(Test) 改为提供 data.frame。

class(summary(Test))
Run Code Online (Sandbox Code Playgroud)
[1] "summary_emm" "data.frame" 
Run Code Online (Sandbox Code Playgroud)

所以可以这样做:

summary(Test)$emmean
Run Code Online (Sandbox Code Playgroud)
[1] 31.03704 25.25926
Run Code Online (Sandbox Code Playgroud)

summary(Test)$SE
Run Code Online (Sandbox Code Playgroud)
[1] 2.105459 2.105459
Run Code Online (Sandbox Code Playgroud)

要真正获得一个新的子集化 data.frame,您需要显式强制转换为类 data.frame:

as.data.frame(summary(Test))[c('emmean', 'SE')]
Run Code Online (Sandbox Code Playgroud)
    emmean       SE
1 31.03704 2.105459
2 25.25926 2.105459
Run Code Online (Sandbox Code Playgroud)

  • 注意 emmeans 1.1 添加了一个 `as.data.frame` 方法。所以`as.data.frame(Test)` 将完成这项工作。 (3认同)