在 `emmeans::joint_tests` 输出中将“:”替换为“x”

Replace ":" with " x " in `emmeans::joint_tests` output

我从 tex exchange 提出这个问题,因为它在那里没有引起太多关注 我得到的答案不适用于 tables 超过 3 行。请看看我如何更改我的代码。感谢您的关注。 https://tex.stackexchange.com/questions/594324/how-to-replace-all-with-or-x-in-an-anova-table

library(emmeans)
library(kableExtra)
neuralgia.glm <- glm(Pain ~ Treatment * Sex * Age, family=binomial, data = neuralgia)

model term        df1 df2 F.ratio p.value
 Treatment           2 Inf       0 1.0000 
 Sex                 1 Inf       0 0.9964 
 Age                 1 Inf       0 0.9941 
 Treatment:Sex       2 Inf       0 1.0000 
 Treatment:Age       2 Inf       0 1.0000 
 Sex:Age             1 Inf       0 0.9942 
 Treatment:Sex:Age   2 Inf       0 1.0000 

我想把所有的冒号都换成x,加上space方便查看。这就是我尝试使用 gsub(":", " x ") 的方法。 print(neuralgia.glm, export = T) 命令在编织时将 p 值格式保持为 <0.0001 而不是 0

这段代码只给了我一个 x。使用 subgsub 做同样的事情。

joint_tests(neuralgia.glm) %>%
  print(, export = T) %>% 
  gsub(":", " x ") %>%
  kable()

此代码用“x”替换了冒号,但它破坏了 table。

gsub( "\:", " x ", print(neuralgia.glm, export = T)) %>%
  kable() 

请注意 gsub() 的参数顺序 x = 作为 第三个 参数,而不是第一个。所以你的管道不起作用。

解决方案:

library(emmeans)

neuralgia.glm <- glm(Pain ~ Treatment * Sex * Age, family=binomial, data = neuralgia)
#> Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred

jt <- joint_tests(neuralgia.glm)

jt$`model term` <- gsub(":", " x ", jt$`model term`)

jt
#>  model term            df1 df2 F.ratio p.value
#>  Treatment               2 Inf       0 1.0000 
#>  Sex                     1 Inf       0 0.9970 
#>  Age                     1 Inf       0 0.9951 
#>  Treatment x Sex         2 Inf       0 1.0000 
#>  Treatment x Age         2 Inf       0 1.0000 
#>  Sex x Age               1 Inf       0 0.9952 
#>  Treatment x Sex x Age   2 Inf       0 1.0000

reprex package (v2.0.0)

于 2021-06-07 创建