【问题标题】:How to rotate a table left margin name with knitr and xtable?如何使用 knitr 和 xtable 旋转表格左边距名称?
【发布时间】:2017-03-29 16:18:06
【问题描述】:

我正在尝试使用 knitr 和 xtable 将 table 命令的结果很好地打印在 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 将左侧标题放在左侧而不是就在右上角。

【问题讨论】:

    标签: r latex


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

    【讨论】:

    • 我已将您的代码包含在文章 clas 内的 Rnw 文件中,并添加了 \usepackage{tabularx} 但我收到错误“未定义的控制序列”、“遗漏的 \omit”和“Overfull \盒”。能否请您发布一个完全可重现的 Rnw 代码?
    • 我认为问题来自 colspan 和 rowspan 命令。或者也许我需要一些额外的包或选项。
    • 它可以在 rmarkdown 内部工作,但不能在带有乳胶的 Rnw 内部工作。无论如何,我怎样才能让 var1 文本更靠近右边,更靠近 2、5、7 数字?
    • 嗨@skan,您需要包含的不仅仅是tabularx。尝试library(huxtable); report_latex_dependencies(); 获取完整列表。如果您仍有问题,您可以在github.com/hughjonesd/huxtable/issues 提出问题吗?
    • 我刚刚打开了这个问题。
    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 2015-02-23
    • 2015-09-19
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2015-08-12
    相关资源
    最近更新 更多