R:将 xtable 中的 p 值舍入为两位有效数字,ReporteRs 导出为 Latex/Office/LibreOffice

R : round p values to two significant digits in xtable and ReporteRs export to Latex/Office/LibreOffice

我正在使用 xtablertableReporteRs 的组合来导出各种对象(aovglmlm 等)到 Latex/Word/Powerpoint。然而,我不太喜欢默认方式,在这种方式中,p 值在逗号后以固定位数给出。相反,我宁愿它会以类似于基本 R 函数 format.pval()digits=2 的格式给我 p 值,即给 p 值四舍五入到两位有效数字 - 在这种情况下为 4.2e -17 和 0.25).

例如

ctl = c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt = c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group = gl(2, 10, 20, labels = c("Ctl","Trt"))
weight = c(ctl, trt)
fit = lm(weight ~ group)
s=summary(fit)
s

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   4.8465     0.1557  31.124   <2e-16 ***
group1        0.1855     0.1557   1.191    0.249    

library(xtable)
library(rtable)
library(ReporteRs)
tab=as.FlexTable(xtable(s))
tab

我希望以与 summary(fit) 类似的方式格式化 p 值,但是(右对齐,四舍五入为两位有效数字,在本例中为 4.2e-17 和 0.25)。 任何人都知道如何以通用方式实现这一点,理想情况下是 xtable?

支持的所有对象给出的 p 值

编辑:在下面的帮助下,我现在用辅助函数 table2doctable2ppttable2html 制作了一个 [small package export],用于将之前显示的 R 统计对象导出到 Word 、Powerpoint 或 HTML(并使用 graph2pptgraph2doc 函数将当前活动的图表导出到 Powerpoint 或 Word),请参阅 https://cran.r-project.org/web/packages/export/index.htmlhttps://github.com/tomwenseleers/export

定义一个辅助函数来查找 p 值的签名,我将其视为其中包含 "Pr" 的那些 colnames:

xtable2 <- function(x, ...) {  sm <- x[['coefficients']]; ncol <- ncol(sm)
                             whch<- grep("Pr", colnames(sm))
                             digs <- rep(4, ncol+1); digs[whch+1] <- 2
                             disp <-rep("f", ncol+1); disp[whch+1] <- "g"
                  xtable(x, digits= digs, display=disp, ...) }

> tab <- as.FlexTable(xtable2(s)); tab