R:将 CrossTable 导出到 Latex
R: Export CrossTable to Latex
有没有办法将 CrossTable
(从 gmodels
包)导出到 Latex?
所以如果我这样做 :
let = sample(c("A","B"), 10 , replace=TRUE)
num = sample(1:3, 10 , replace=TRUE)
tab = CrossTable(let , num, prop.c = FALSE,prop.t = FALSE, prop.chisq=FALSE)
有没有办法将标签导出到乳胶 table?
使用 CrossTable
不是首选。我只需要在同一个单元格中提供计数和行百分比的东西。
根据 gmodels
' 包文档,函数 CrossTable()
returns 结果为列表。因此,我没有发现将结果导出为 LaTeX 格式有任何问题。您只需要将该列表转换为数据框。然后您可以选择各种 R
包,其中包含将数据框转换为 LaTeX 格式的函数。例如,您可以使用 psych
包中的 df2latex()
。或者,您可以使用 latex()
或 latexTabular()
,它们都来自 Hmisc
包。前者将数据框转换为 TeX 文件,而前者将数据框转换为 tabular
环境(LaTeX table)中相应对象的 LaTeX 代码。
更新:
初始尝试 - 无效,因为 CrossTable()
的结果不是一个简单的列表:
library(gmodels)
library(Hmisc)
let <- sample(c("A","B"), 10, replace = TRUE)
num <- sample(1:3, 10, replace = TRUE)
tab <- CrossTable(let, num, prop.c = FALSE, prop.t = FALSE, prop.chisq = FALSE)
myList <- lapply(1:ncol(tab), function(x) as.character(unlist(tab[, x])))
myDF <- as.data.frame(cbind(myList), stringsAsFactors = FALSE)
myLatex <- latexTabular(myDF)
进一步努力
好吧,这比我最初想象的要复杂一些,但在我看来有两种方法。请看下面。
第一个选项是将 CrossTable 转换为数据框
myDF <- as.data.frame(tab)
然后根据您的要求手动重塑初始数据框(抱歉,我对交叉制表不太熟悉)。
第二个选项使用Rz
包(安装有点烦,要安装Gtk,但关闭GUI后,可以正常调用R session中的函数,如下。
library(Rz)
let <- sample(c("A","B"), 10, replace = TRUE)
num <- sample(1:3, 10, replace = TRUE)
tab <- crossTable(let, num) # note that I use crossTable() from 'Rz' package
# Console (default) output
summary(tab)
=================================
num
--------------------
let 1 2 3 Total
---------------------------------
A 0 2 1 3
0.0% 66.7% 33.3% 100%
B 1 2 4 7
14.3% 28.6% 57.1% 100%
---------------------------------
Total 1 4 5 10
10.0% 40.0% 50.0% 100%
=================================
Chi-Square Test for Independence
Number of cases in table: 10
Number of factors: 2
Test for independence of all factors:
Chisq = 1.4286, df = 2, p-value = 0.4895
Chi-squared approximation may be incorrect
Please install vcd package to output Cramer's V.
# Now use LaTeX output
summary(tab, latex = TRUE)
\begin{table}[htbp]
\centering
\caption{let $\times$ num}
\begin{tabular}{lrrrr}
\toprule
& \multicolumn{3}{c}{num} & \
\cline{2-4}
let &\multicolumn{1}{c}{1}&\multicolumn{1}{c}{2}&\multicolumn{1}{c}{3}&\multicolumn{1}{c}{Total} \
\midrule
A & 0 & 2 & 1 & 3 \
& 0.0\% & 66.7\% & 33.3\% & 100\% \
B & 1 & 2 & 4 & 7 \
& 14.3\% & 28.6\% & 57.1\% & 100\% \
\midrule
Total& 1 & 4 & 5 & 10 \
& 10.0\% & 40.0\% & 50.0\% & 100\% \
\bottomrule
\end{tabular}
\end{table}
Chi-Square Test for Independence
Number of cases in table: 10
Number of factors: 2
Test for independence of all factors:
Chisq = 1.4286, df = 2, p-value = 0.4895
Chi-squared approximation may be incorrect
Please install vcd package to output Cramer's V.
完成!
有没有办法将 CrossTable
(从 gmodels
包)导出到 Latex?
所以如果我这样做 :
let = sample(c("A","B"), 10 , replace=TRUE)
num = sample(1:3, 10 , replace=TRUE)
tab = CrossTable(let , num, prop.c = FALSE,prop.t = FALSE, prop.chisq=FALSE)
有没有办法将标签导出到乳胶 table?
使用 CrossTable
不是首选。我只需要在同一个单元格中提供计数和行百分比的东西。
根据 gmodels
' 包文档,函数 CrossTable()
returns 结果为列表。因此,我没有发现将结果导出为 LaTeX 格式有任何问题。您只需要将该列表转换为数据框。然后您可以选择各种 R
包,其中包含将数据框转换为 LaTeX 格式的函数。例如,您可以使用 psych
包中的 df2latex()
。或者,您可以使用 latex()
或 latexTabular()
,它们都来自 Hmisc
包。前者将数据框转换为 TeX 文件,而前者将数据框转换为 tabular
环境(LaTeX table)中相应对象的 LaTeX 代码。
更新:
初始尝试 - 无效,因为 CrossTable()
的结果不是一个简单的列表:
library(gmodels)
library(Hmisc)
let <- sample(c("A","B"), 10, replace = TRUE)
num <- sample(1:3, 10, replace = TRUE)
tab <- CrossTable(let, num, prop.c = FALSE, prop.t = FALSE, prop.chisq = FALSE)
myList <- lapply(1:ncol(tab), function(x) as.character(unlist(tab[, x])))
myDF <- as.data.frame(cbind(myList), stringsAsFactors = FALSE)
myLatex <- latexTabular(myDF)
进一步努力
好吧,这比我最初想象的要复杂一些,但在我看来有两种方法。请看下面。
第一个选项是将 CrossTable 转换为数据框
myDF <- as.data.frame(tab)
然后根据您的要求手动重塑初始数据框(抱歉,我对交叉制表不太熟悉)。
第二个选项使用Rz
包(安装有点烦,要安装Gtk,但关闭GUI后,可以正常调用R session中的函数,如下。
library(Rz)
let <- sample(c("A","B"), 10, replace = TRUE)
num <- sample(1:3, 10, replace = TRUE)
tab <- crossTable(let, num) # note that I use crossTable() from 'Rz' package
# Console (default) output
summary(tab)
=================================
num
--------------------
let 1 2 3 Total
---------------------------------
A 0 2 1 3
0.0% 66.7% 33.3% 100%
B 1 2 4 7
14.3% 28.6% 57.1% 100%
---------------------------------
Total 1 4 5 10
10.0% 40.0% 50.0% 100%
=================================
Chi-Square Test for Independence
Number of cases in table: 10
Number of factors: 2
Test for independence of all factors:
Chisq = 1.4286, df = 2, p-value = 0.4895
Chi-squared approximation may be incorrect
Please install vcd package to output Cramer's V.
# Now use LaTeX output
summary(tab, latex = TRUE)
\begin{table}[htbp]
\centering
\caption{let $\times$ num}
\begin{tabular}{lrrrr}
\toprule
& \multicolumn{3}{c}{num} & \
\cline{2-4}
let &\multicolumn{1}{c}{1}&\multicolumn{1}{c}{2}&\multicolumn{1}{c}{3}&\multicolumn{1}{c}{Total} \
\midrule
A & 0 & 2 & 1 & 3 \
& 0.0\% & 66.7\% & 33.3\% & 100\% \
B & 1 & 2 & 4 & 7 \
& 14.3\% & 28.6\% & 57.1\% & 100\% \
\midrule
Total& 1 & 4 & 5 & 10 \
& 10.0\% & 40.0\% & 50.0\% & 100\% \
\bottomrule
\end{tabular}
\end{table}
Chi-Square Test for Independence
Number of cases in table: 10
Number of factors: 2
Test for independence of all factors:
Chisq = 1.4286, df = 2, p-value = 0.4895
Chi-squared approximation may be incorrect
Please install vcd package to output Cramer's V.
完成!