Я столкнулся со странным поведением с kableExtra column_widths, и я не уверен, связано ли это с самой последней версией kableExtra или с недавно реализованным параметром «группы» в функции суммирования dplyr.
Если я создам такой фрейм данных...
Summary <- mtcars %>%
group_by(cyl, gear, carb) %>%
summarise(count = n(), .groups = "keep") %>%
arrange(desc(cyl))
а затем попытаться свести в таблицу фрейм данных с помощью kableExtra, как это...
kable((Summary), caption = "mtcars Data Summary\n", align = c('l','l','c','c')) %>%
kable_styling(bootstrap_options = c("striped","hover"),full_width = FALSE, position = "left") %>%
collapse_rows(columns = 1, valign = "top") %>%
column_spec(1, width = "3cm") %>% column_spec(2, width = "3cm") %>%
column_spec(3, width = "2cm") %>% column_spec(4, width = "2cm")
Я получаю эту ошибку -
Ошибка в xml_children(x)[[search]] : нижний индекс выходит за пределы
Я полностью понимаю эту ошибку в контексте попытки указать ширину столбца для несуществующего столбца, но этот фрейм данных, созданный функцией суммирования, явно содержит 4 столбца...
Ряды: 12
Колонки: 4
Группы: цилиндр, шестерня, карбюратор [12]
$ цил 8, 8, 8, 8, 8, 6, 6, 6, 4, 4, 4, 4
$ шестерня 3, 3, 3, 5, 5, 3, 4, 5, 3, 4, 4, 5
$ углеводов 2, 3, 4, 4, 8, 1, 4, 6, 1, 1, 2, 2
$ считать 4, 3, 5, 1, 1, 2, 4, 1, 1, 4, 4, 2
поэтому я не могу понять, как эта ошибка происходит. Также, если я удалю ширину столбца установка для столбца № 4, тогда таблица выводится, как и ожидалось (минус желаемая ширина столбца №4)
Мне было интересно, связано ли это с недавними обновлениями kableExtra (теперь в 1.3.1) или из-за нового параметра «.groups» в сводке dplyr (теперь в 1.0.2), но я пробовал все допустимые значения .groups = "..." безуспешно.
Спасибо, Абдур - на самом деле я не использую пакет xml2, но ссылка была очень полезной; Дальнейшее чтение на GitHub упомянуло roll_rows (мимоходом), и я смог показать, что если я закомментирую строку... collapse_rows(columns = 1, valign = "top") %>% из моего звонка в Kable проблема решена... так что проблема, похоже, связана с самой недавнее обновление kableExtra





В конце добавьте функцию Collar_rows.
library(kableExtra)
Summary <- mtcars %>%
group_by(cyl, gear, carb) %>%
summarise(count = n(), .groups = "keep") %>%
arrange(desc(cyl))
Table <- kbl(Summary, caption = "mtcars Data Summary\n", align = c('l','l','c','c')) %>%
kable_styling(bootstrap_options = c("striped","hover"),full_width = FALSE, position = "left") %>%
column_spec(1, width = "3cm") %>% column_spec(2, width = "3cm") %>%
column_spec(3, width = "2cm") %>% column_spec(4, width = "2cm")
Table <- Table %>%
collapse_rows(columns = 1, valign = "top")
Да, отлично работает... спасибо :-) ... (теперь также использую KableExtra 1.3.4)
Кто-нибудь может объяснить, почему возникла эта ошибка? Что делает convert_rows, чтобы исправить это?
Кажется, эта ошибка исходит из пакета
xml2, но она не решена: github.com/haozhu233/kableExtra/issues/513