r - 如何在R中的xtable中将换行符放入列标题中

标签 r latex tex sweave xtable

我有一个要放入 sweave 的数据框使用 xtable 的文档,但是我的一个列名很长,我想将它分成两行以节省空间

calqc_table<-structure(list(RUNID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), ANALYTEINDEX = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), ID = structure(1:11, .Label = c("Cal A", "Cal B", "Cal C", 
"Cal D", "Cal E", "Cal F", "Cal G", "Cal H", "Cal High", "Cal Low", 
"Cal Mid"), class = "factor"), mean_conc = c(200.619459644855, 
158.264703128903, 102.469121407733, 50.3551544728544, 9.88296440865076, 
4.41727762501703, 2.53494715706024, 1.00602831741361, 199.065054555735, 
2.48063347296935, 50.1499780776199), sd_conc = c(2.3275711264554, 
NA, NA, NA, NA, NA, NA, 0.101636943231162, 0, 0, 0), nrow = c(3, 
1, 1, 1, 1, 1, 1, 3, 2, 2, 2)), .Names = c("Identifier of the Run within the Study", "ANALYTEINDEX", 
"ID", "mean_conc", "sd_conc", "nrow"), row.names = c(NA, -11L
), class = "data.frame")
calqc_xtable<-xtable(calqc_table)

我尝试在名称中添加换行符,但这似乎不起作用
names(calqc_table)[1]<-"Identifier of the \nRun within the Study"

有没有办法做到这一点 ?我看到有人建议使用 hmisc 中的 latex 功能。包手动迭代表并手动将其写在 latex 中,包括换行符,但这似乎有点不合时宜!

最佳答案

我发现这样做的最佳方法是将表格列指示为“固定宽度”列,以便其中的文本换行。与 xtable包,这可以通过以下方式完成:

align( calqc_xtable ) <- c( 'l', 'p{1.5in}', rep('c',5) )
xtable要求您为选项“行名”列提供对齐方式 - 这是初始 l规范。部分规范,p{1.5in} , 用于您的第一个列标题,它很长。这将其限制为宽度为 1.5 英寸的框,并且标题将在必要时换成多行。其余五列使用 c 设置为居中。说明符。

固定宽度列的一个主要问题,如 p{1.5in}他们使用对齐的对齐方式设置文本 .这会导致每行中的字间距扩大,以使该行将填满分配的整个 1.5 英寸。

坦率地说,在大多数情况下,这会产生我无法用礼貌语言描述的结果(我是一个业余排版狂,这种行为会导致面部打勾)。

解决方法是通过添加 >{} 来提供 latex 对齐命令。字段到列规范:
align( calqc_xtable ) <- c( 'l', '>{\\centering}p{1.5in}', rep('c',4) )

其他有用的对齐命令是:
  • \raggedright -> 导致文本为 左对齐
  • \raggedleft -> 导致文本为 右对齐

  • 请记住双反斜杠以在 R 字符串中转义它们。您可能还需要禁用 xtable 的字符串清理功能。默认使用。

    备注

    这种对齐技术将失败 如果用于表格的最后一列 除非表格行以 \tabularnewline 结尾而不是 \\ ,我认为 xtable 的情况并非如此并且不容易通过任何用户可设置的选项进行定制。

    要考虑的另一件事是,您可能不希望将整列线换行到 1.5 英寸并居中 - 只是标题。在这种情况下,禁用 xtable字符串清理并使用 \multicolumn 设置标题宽度为 1 的单元格:
    names(calqc_table)[1]<-"\\multicolumn{1}{>{\\centering}p{1.5in}}{Identifier of the Run within the Study}"
    

    关于r - 如何在R中的xtable中将换行符放入列标题中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2686320/

    相关文章:

    latex - 在 latex 中手动定义页码?

    emacs - 如何使用真实的文件名默认设置查看命令?

    iOS 搜索和替换 PDF 字符串

    r - 计算每 n 行相对于每组条件的斜率

    r - 如何为另一个向量中的每个元素获取向量中最接近的元素而没有重复?

    r - 过早地停止正在运行的 mcparallel 作业

    emacs - 如何阻止组织模式将我的数字移动到最后一页?

    latex - 格式化 TOC 中未编号的章节

    matlab - 更改 MATLAB 对话框的字体

    r - 如何在多个多方面ggplot2图形中实现相同的方面大小和比例?