R:将 xtable 中的 p 值舍入为两位有效数字,ReporteRs 导出为 Latex/Office/LibreOffice
R : round p values to two significant digits in xtable and ReporteRs export to Latex/Office/LibreOffice
我正在使用 xtable
、rtable
和 ReporteRs
的组合来导出各种对象(aov
、glm
、 lm
等)到 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 值
编辑:在下面的帮助下,我现在用辅助函数 table2doc
、table2ppt
和 table2html
制作了一个 [small package export
],用于将之前显示的 R 统计对象导出到 Word 、Powerpoint 或 HTML(并使用 graph2ppt
和 graph2doc
函数将当前活动的图表导出到 Powerpoint 或 Word),请参阅
https://cran.r-project.org/web/packages/export/index.html 和
https://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
我正在使用 xtable
、rtable
和 ReporteRs
的组合来导出各种对象(aov
、glm
、 lm
等)到 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
?
编辑:在下面的帮助下,我现在用辅助函数 table2doc
、table2ppt
和 table2html
制作了一个 [small package export
],用于将之前显示的 R 统计对象导出到 Word 、Powerpoint 或 HTML(并使用 graph2ppt
和 graph2doc
函数将当前活动的图表导出到 Powerpoint 或 Word),请参阅
https://cran.r-project.org/web/packages/export/index.html 和
https://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