Похоже на проблему LaTeX с вертикальным выравниванием в таблицах.
Цитата из номера на github:
[...] похоже на то, что командная книга в буксах испортила расчет многолинейности ..
[...] Я не знаю, смогу ли я найти хорошее решение для этого. Я, конечно, могу удалить эти средние линии. Мне они тоже не нравятся, но они важны для таблиц с несколькими столбцами заголовков. Если мы сохраним эти средние линии, люди из TeX говорят, что вы можете вручную добавить корректировки к многоряду. Я, конечно, могу смоделировать это с помощью кода, но, похоже, это принесет мне больше проблем в будущем.
Источник: https://github.com/haozhu233/kableExtra/issues/56
Дополнительные ссылки:
Это решение хорошо работало в моем случае, когда у меня была такая же проблема. Решение основано на манипулировании data.frame перед выводом в kable, а не изменении вывода kable с помощью collapse_rows. Оригинальный участник ( Michael Harper ) разработал его для использования с форматируемым пакетом, но его можно легко настроить для пакета kable.
Вам необходимо объявить эту функцию:
collapse_rows_df <- function(df, variable){
group_var <- enquo(variable)
df %>%
group_by(!! group_var) %>%
mutate(groupRow = 1:n()) %>%
ungroup() %>%
mutate(!!quo_name(group_var) := ifelse(groupRow == 1, as.character(!! group_var), "")) %>%
select(-c(groupRow))
}
Функция удаляет все данные, кроме первого, в указанном столбце, оставляя вместо них пробелы.
Вам необходимо вызвать функцию перед отправкой данных в kable. Смотрите пример ниже:
library(knitr) # required for kable()
# dfToKable - your data.frame you need to kable
# columnToCollapseRows - the name of the column, in which you want to collapse the rows;
# it should be a valid variable within the data.frame set and be passed without quotes
kable( collapse_rows_df( dfToKable, columnToCollapseRows ),
row.names = F, escape = F, longtable = TRUE) %>%
kable_styling(full_width = T, latex_options = c("repeat_header"))
На основании предоставленного вами кода и снимка экрана это должно работать для вас:
kable( collapse_rows_df( data, SubID) "latex", booktabs = T,longtable = T, linesep = "", row.names = FALSE) %>%
kable_styling(full_width = T,
position = "center",
latex_options = c("striped", "repeat_header","hold_position"),
font_size = 6,5)%>%
column_spec(c(1), color = "black", width = "5em")%>%
column_spec(c(2), color = "black", width = "30em")%>%
row_spec(0, bold = T, color = "black")