在 R 中,在 LaTeX、PDF 或 HTML 中从 "IRR" 包输出中生成 "pretty" 结果 table
In R, make a "pretty" result table in LaTeX, PDF, or HTML from "IRR" package output
背景
我正在使用 R
中的 irr
包为我正在做的项目生成一些评分者间的可靠性统计数据。下面是 Fleiss 的 Kappa 使用包内置数据的示例:
install.packages("irr")
library(irr)
data("diagnoses", package = "irr")
diagnoses2 <- diagnoses[, 1:3]
kappam.fleiss(diagnoses2)
这给出了一个简单的小输出 table,在 R 控制台中看起来像这样:
问题与期望的结果
我想“美化”这个输出,以便我可以将它导入到我用来编写结果的 LaTeX 文档中。
基本上我会采用任何格式,只要它或多或少是自动的:LaTeX、PDF 或 PNG 图像,甚至是 table 的 HTML 版本。问题是我有几个这样的输出 tables 要制作,我宁愿不必笨拙地手动将它们转换为 LaTeX 格式。如果必须的话,我会这样做,但我想节省时间。
我试过的
我试过使用 knitr
像这样:
knitr::kable(diagnoses2, "latex")
但效果不是很好:cannot coerce class ‘"irrlist"’ to a data.frame
.
我看过另外两个在过去对我有帮助的软件包,texreg
和 stargazer
,但是他们的文档没有说他们支持 irr
输出所以我还没有真正尝试过。 (虽然我会一次 post 这个。)与此同时,我也在检查 this post 看看是否有任何效果。感谢您的宝贵时间。
编辑/附录
@akrun 和@TarJae 使用新颖的(对我而言)方法和程序包在下面提供了一些简洁的答案。这些方法可能对那些不是 irr
但在 texreg
或 stargazer
等包中也没有“官方支持”的包的统计输出有很大帮助。换句话说,我认为它们可能会推广到其他情况。希望各位读者多多关注!
如果我们直接在输出上应用 data.frame
,它不会工作,因为 class
as.data.frame(kappam.fleiss(diagnoses2))
Error in as.data.frame.default(kappam.fleiss(diagnoses2)) :
cannot coerce class ‘"irrlist"’ to a data.frame
我们可能会在 do.call
内转换为 data.frame
out <- do.call(data.frame, kappam.fleiss(diagnoses2))
-检查结构
> str(out)
'data.frame': 1 obs. of 8 variables:
$ method : chr "Fleiss' Kappa for m Raters"
$ subjects : int 30
$ raters : int 3
$ irr.name : chr "Kappa"
$ value : num 0.534
$ stat.name: chr "z"
$ statistic: num 9.89
$ p.value : num 0
一旦我们转换为 data.frame
,kable
将起作用
> knitr::kable(out, "latex")
\begin{tabular}{l|r|r|l|r|l|r|r}
\hline
method & subjects & raters & irr.name & value & stat.name & statistic & p.value\
\hline
Fleiss' Kappa for m Raters & 30 & 3 & Kappa & 0.5343368 & z & 9.893792 & 0\
\hline
\end{tabular}
我们可以使用 gtsummary
。详细改编见这里:http://www.danieldsjoberg.com/gtsummary/
out <- do.call(data.frame, kappam.fleiss(diagnoses2))
library(gtsummary)
out %>%
tbl_summary
背景
我正在使用 R
中的 irr
包为我正在做的项目生成一些评分者间的可靠性统计数据。下面是 Fleiss 的 Kappa 使用包内置数据的示例:
install.packages("irr")
library(irr)
data("diagnoses", package = "irr")
diagnoses2 <- diagnoses[, 1:3]
kappam.fleiss(diagnoses2)
这给出了一个简单的小输出 table,在 R 控制台中看起来像这样:
问题与期望的结果
我想“美化”这个输出,以便我可以将它导入到我用来编写结果的 LaTeX 文档中。
基本上我会采用任何格式,只要它或多或少是自动的:LaTeX、PDF 或 PNG 图像,甚至是 table 的 HTML 版本。问题是我有几个这样的输出 tables 要制作,我宁愿不必笨拙地手动将它们转换为 LaTeX 格式。如果必须的话,我会这样做,但我想节省时间。
我试过的
我试过使用 knitr
像这样:
knitr::kable(diagnoses2, "latex")
但效果不是很好:cannot coerce class ‘"irrlist"’ to a data.frame
.
我看过另外两个在过去对我有帮助的软件包,texreg
和 stargazer
,但是他们的文档没有说他们支持 irr
输出所以我还没有真正尝试过。 (虽然我会一次 post 这个。)与此同时,我也在检查 this post 看看是否有任何效果。感谢您的宝贵时间。
编辑/附录
@akrun 和@TarJae 使用新颖的(对我而言)方法和程序包在下面提供了一些简洁的答案。这些方法可能对那些不是 irr
但在 texreg
或 stargazer
等包中也没有“官方支持”的包的统计输出有很大帮助。换句话说,我认为它们可能会推广到其他情况。希望各位读者多多关注!
如果我们直接在输出上应用 data.frame
,它不会工作,因为 class
as.data.frame(kappam.fleiss(diagnoses2))
Error in as.data.frame.default(kappam.fleiss(diagnoses2)) : cannot coerce class ‘"irrlist"’ to a data.frame
我们可能会在 do.call
data.frame
out <- do.call(data.frame, kappam.fleiss(diagnoses2))
-检查结构
> str(out)
'data.frame': 1 obs. of 8 variables:
$ method : chr "Fleiss' Kappa for m Raters"
$ subjects : int 30
$ raters : int 3
$ irr.name : chr "Kappa"
$ value : num 0.534
$ stat.name: chr "z"
$ statistic: num 9.89
$ p.value : num 0
一旦我们转换为 data.frame
,kable
将起作用
> knitr::kable(out, "latex")
\begin{tabular}{l|r|r|l|r|l|r|r}
\hline
method & subjects & raters & irr.name & value & stat.name & statistic & p.value\
\hline
Fleiss' Kappa for m Raters & 30 & 3 & Kappa & 0.5343368 & z & 9.893792 & 0\
\hline
\end{tabular}
我们可以使用 gtsummary
。详细改编见这里:http://www.danieldsjoberg.com/gtsummary/
out <- do.call(data.frame, kappam.fleiss(diagnoses2))
library(gtsummary)
out %>%
tbl_summary