我正在尝试使用knitr和xtable将表格命令的结果很好地打印在pdf上。
作为玩具示例,假设我想要使用
创建表格表(C(2,5,5,5,5,7,7,7,7,NA),C(1,5,2,2,2,2,7,7,NA,NA) )
我想得到这样的东西:
如您所见,var1逆时针旋转90度 我怎么才能得到它? 类似的结果,用更少或更多的线也可以。
我正在尝试我找到的不同方法 我已经创建了这个Rnw文件,
\documentclass{article}
\usepackage{booktabs}
\usepackage{rotating}
\begin{document}
<<r table, results='asis', echo=FALSE>>=
library(knitr)
library(xtable)
var1 <- c(2,5,5,5,5,7,7,7,7,NA)
var2 <- c(1,5,2,2,2,2,7,7,NA,NA)
print(xtable(table(var1,var2)))
print.xtableFtable(xtableFtable(ftable(var1,var2),
method = "row.compact"))
print.xtableFtable(xtableFtable(ftable(var1,var2),
method = "row.compact"), rotate.rownames = TRUE)
print.xtable(xtable(table(var1,var2)), include.rownames=T,include.colnames=T)
@
\end{document}
您可以在下面看到我尝试过的三种方法的结果。
我无法得到预期的结果。
使用其他常见软件包或kable的任何解决方案也可以。
我想可以使用 \ rotatebox {90} 来完成,但我不知道如何强制xtable使用它,也不知道如何告诉xtable将左侧标题放在左侧而不是只是在右上角。
答案 0 :(得分:1)
这是一种可能性。免责声明:我是包裹作者。
library(huxtable)
var1 <- c(2,5,5,5,5,7,7,7,7,NA)
var2 <- c(1,5,2,2,2,2,7,7,NA,NA)
tbl <- table(var1 = var1, var2 = var2)
ht <- as_hux(tbl)
ht <- cbind(rep('', 4), ht)
ht[2,1] <- 'var1'
ht <- rbind(rep('', 6), ht)
ht[2,2] <- '' # get rid of "rownames"
ht[1,3] <- 'var2'
colspan(ht)[1,3] <- 4
rowspan(ht)[3, 1] <- 3
rotation(ht)[3, 1] <- 90
right_border(ht)[,2] <- 1
bottom_border(ht)[5, -1] <- 1
bottom_border(ht)[2, -1] <- 1
ht
在rmarkdown PDF文档中使用时,会产生: