Как положить новую строку в заголовок столбца в XTable в R

StackOverflow https://stackoverflow.com/questions/2686320

  •  30-09-2019
  •  | 
  •  

Вопрос

У меня есть DataFrame, который я вкладываю в овладение Документ с помощью 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 вручную, включая новую строку, но это кажется немного FAF!

Это было полезно?

Решение

Лучшим способом, которым я обнаружил, это необходимо указать столбец таблицы как «фиксированную ширину» столбца, так что текст внутри него оборачивается. С 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 дюйма.

Честно говоря, в большинстве случаев это производит результаты, которые я не могу описать с использованием вежливого языка (я самую любительскую гайку типографии, и такое поведение приводит к тому, что поведение вызывает лицевые галочки).

Исправление состоит в том, чтобы обеспечить команду выравнивания латекса, добавляя >{} Поле к спецификации столбца:

align( calqc_xtable ) <- c( 'l', '>{\\centering}p{1.5in}', rep('c',4) )

Другие полезные команды выравнивания:

  • Raggedright -> вызывает текст быть выровненный левый
  • Raggedleft -> вызывает текст Выровнены вправо

Не забывайте дважды обратные косание, чтобы избежать их в строках R. Вам также может потребоваться отключить функцию STRING SABITING, которая 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}"

Другие советы

Техника @Sharpie не работает для меня, так как Pandoc не удалось с ошибкой 43 на преобразовании в PDF. Поэтому вот что я сделал:

переехал \\centering Маркер:

names(calqc_table)=c(rep("\\multicolumn{1}{p{0.75in}}{\\centering Identifier of the Run within the Study}", 6))

(здесь применяется ко всеми 6 столбцами таблицы)

И отключенная дезинфекция в печати Xtable:

print(calqc_table, sanitize.colnames.function=function(x){x})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top