如何使用knitr和xtable旋转表左边距名称?

时间:2017-03-29 16:18:07

标签: r latex

我正在尝试使用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) )

我想得到这样的东西:

introducir la descripción de la imagen aquí

如您所见,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}

您可以在下面看到我尝试过的三种方法的结果。

introducir la descripción de la imagen aquí

我无法得到预期的结果。

使用其他常见软件包或kable的任何解决方案也可以。

我想可以使用 \ rotatebox {90} 来完成,但我不知道如何强制xtable使用它,也不知道如何告诉xtable将左侧标题放在左侧而不是只是在右上角。

1 个答案:

答案 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文档中使用时,会产生:

pic of PDF output