Сохранять имена таблиц в выводе knitr или pander?
Я печатаю таблицы частот, используя knit::kable
а также pander::pandoc
и вообще это прекрасно работает для вывода HTML/Word/LaTeX. Но иногда я хотел бы сохранить имена измерений в конечном продукте. К сожалению, оба pander
а также knitr
отбросьте их при конвертации в уценку.
# create a simple table
tab <- table(mtcars$gear, mtcars$carb)
# add dimension names
names(dimnames(tab)) <- c("gear", "carb")
Это создает таблицу:
carb
gear 1 2 3 4 6 8
3 3 4 3 5 0 0
4 4 4 0 4 0 0
5 0 2 0 1 1 1
Но теперь, если мы печатаем, скажем, с Kable:
> kable(tab)
| | 1| 2| 3| 4| 6| 8|
|:--|--:|--:|--:|--:|--:|--:|
|3 | 3| 4| 3| 5| 0| 0|
|4 | 4| 4| 0| 4| 0| 0|
|5 | 0| 2| 0| 1| 1| 1|
Нет имен измерений! (А также ?kable
не указывает ни один вариант, который бы их включал.)
Какие-нибудь предложения для инструмента, который сохранит их? Я заметил что descr:CrossTable
делает трюк, но включает в себя много дополнительной информации, которую я хотел бы пропустить.
Большое спасибо.
1 ответ
Вы можете использовать, например, ftable
чтобы создать плоскую таблицу сопряженности, неявно имеющую имена измерений:
> pander::pander(ftable(tab))
---- ---- - - - - - -
carb 1 2 3 4 6 8
gear
3 3 4 3 5 0 0
4 4 4 0 4 0 0
5 0 2 0 1 1 1
---- ---- - - - - - -
Или вы можете также подавить ненужные клетки из descr::CrossTable
такие как:
> pander(descr::CrossTable(tab, prop.r = FALSE, prop.c = FALSE, prop.chisq = FALSE))
------------------------------------------------------------------------------
\ carb\ \ \ \ \ \ \
gear 1 2 3 4 6 8 Total
--------- -------- --------- --------- --------- --------- --------- ---------
**3**\ \ \ \ \ \ \ \
N\ 3\ 4\ 3\ 5\ 0\ 0\ 15\
Total(%) 9.375% 12.500% 9.375% 15.625% 0.000% 0.000%
**4**\ \ \ \ \ \ \ \
N\ 4\ 4\ 0\ 4\ 0\ 0\ 12\
Total(%) 12.500% 12.500% 0.000% 12.500% 0.000% 0.000%
**5**\ \ \ \ \ \ \ \
N\ 0\ 2\ 0\ 1\ 1\ 1\ 5\
Total(%) 0.000% 6.250% 0.000% 3.125% 3.125% 3.125%
Total 7 10 3 10 1 1 32
------------------------------------------------------------------------------
Или отправьте билет на GH:)