kableExtra: Как работает функция add_header_above?

#r #kableextra

#r #kableextra

Вопрос:

Я хочу добавить строку, объясняющую столбцы моей таблицы. Но add_header_above функция немного сбивает с толку. Как вы ее используете? Это встроенный пример:

 x = kable(head(mtcars), "html")
# Add a row of header with 3 columns on the top of the table. The column span for the 2nd and 3rd one are 5 amp; 6.
add_header_above(x, header = c(" ", "Group 1" = 5, "Group 2" = 6))
  

Ответ №1:

Вы должны создать именованный вектор, соответствующий нужной строке заголовка, например c("Group 1" = 5)

Каждый элемент заголовка состоит из текста и его «диапазона»

«span» — это единственное число, указывающее, сколько столбцов занимает элемент в строке заголовка.

Эти интервалы накапливаются и должны суммироваться с общим количеством столбцов в таблице.

Итак, если у вас есть таблица из 7 столбцов, и вам нужен заголовок, охватывающий всю таблицу, вы могли бы сказать:

 add_header_above(myKe, header = c("Big title" = 7))`
  

Если бы вам нужен был пустой заголовок над начальным столбцом имен строк, за которым следует заголовок, охватывающий столбцы 2: 3, другой охватывающий 3: 4, и последние 2 ячейки пустые в вашей таблице из 7 столбцов, вы бы сказали:

 add_header_above(myKe, header = c(" " = 1, "header1" = 2, "header2" = 2, " " = 2))
  

примечание: заголовок не может быть пустым, поэтому вам нужно использовать пробел » » в «пустых» ячейках.

Важное предостережение: эта конструкция c("my header" = 7) не будет работать, если ваши заголовки создаются на лету, потому tmp= "X"; c(tmp = 7) что интерпретируется как c("tmp" = 7)

Вместо этого вам нужно было бы сказать что-то вроде:

 header = 7 
names(header) = "X"

myKe = add_header_above(myKe, header = header)