Почему Kable добавляет в мою таблицу несуществующий столбец?

Я импортировал данные из CSV и создал таблицу из этих данных. Приведенный ниже код представляет собой (по общему признанию, вероятно, обходной) способ объединения данных таким образом, который я бы хотел представить:

sc_data_specialty_1_count<-as.vector(table(sc_data$SPECIALTY_1)) #CREATE TABLE OF SPECIALTY_1 COUNTS
sc_data_specialty_1_percent<-as.vector(table(sc_data$SPECIALTY_1)/nrow(sc_data)) #CREATE TABLE OF SPECIALTY_1 PERCENT.
sc_data_specialty_1_table<-rbind(sc_data_specialty_1_count,sc_data_specialty_1_percent*100) #COMBINE TABLES
sc_data_specialty_1_table<-round(sc_data_specialty_1_table,digits = 0) #ROUND TABLE
rownames(sc_data_specialty_1_table)<-c("Count","Proportion (%)") #ADD ROW NAMES

Эта матрица (sc_data_specialty_1_table) выглядит следующим образом:

             [,1] [,2] [,3] [,4] [,5] [,6] [,7]
Count          2   30    1    2    8    1    1
Proportion (%) 4   67    2    4   18    2    2

Обратите внимание, что есть семь столбцов. Я пытаюсь создать таблицу kable в RMarkdown со следующим кодом:

kable(sc_data_specialty_1_table, col.names=c("ENT","General Surgery","Neurosurgery","Ophthalmology","Orthopedic","PM&R","Urology"),format="latex",booktabs=TRUE, caption = "Professors by specialty") %>%  #Creates an RMarkdown table using kable()

kable_styling(latex_options=c("scale_down","hold_position","striped")) #Scales down the table to fit in the page width.

Я получаю сообщение об ошибке, пытаясь сказать мне, что имена, указанные для столбцов, не соответствуют количеству столбцов, но я дал семь имен:

Error in dimnames(x) <- dn : 
  length of 'dimnames' [2] not equal to array extent
Calls: <Anonymous> ... eval -> eval -> %>% -> eval -> eval -> kable -> 
colnames<-
Execution halted

Когда я сокращаю Kable до самой простой команды kable(sc_data_specialty_1_table), результат будет следующим:

kable output

По какой-то причине Kable добавляет первый столбец данных, которых нет (и не должно) существовать в sc_data_specialty_1_table.

Когда я вчера работал над этим конкретным документом уценки, у меня не было этой проблемы. Я не менял код со вчерашнего дня и сегодня. Это происходит с несколькими таблицами в моей уценке, которые я построил аналогичным образом.

  1. Кто-нибудь знает, зачем добавляется этот лишний столбец?
  2. Если вы можете интерпретировать, какую таблицу я пытаюсь составить (необработанное количество в верхней строке, доля (%) этой специальности в нижней строке) и знаете более простой способ собрать это вместе в таблице, чем то, что я ' м, это было бы полезно.

Спасибо.


person Dylan Russell    schedule 17.09.2018    source источник
comment
Вы используете пакет kableExtra? Иначе я не могу найти kable_styling. Я не могу воспроизвести проблему без него, так что проблема, скорее всего, там.   -  person r2evans    schedule 17.09.2018


Ответы (1)


Прекрасно работает с sampled data.frame.

library(knitr)

df <- data.frame(Count = c(2, 30, 1, 2, 8, 1, 1),
                 Proportion = c(4, 67, 2, 4, 18, 2, 2))


kable(
  t(df),
  col.names = c(
    "ENT",
    "General Surgery",
    "Neurosurgery",
    "Ophthalmology",
    "Orthopedic",
    "PM&R",
    "Urology"
  ),
  caption = "Professors by specialty",
  row.names = T
)

|           | ENT| General Surgery| Neurosurgery| Ophthalmology| Orthopedic| PM&R| Urology|
|:----------|---:|---------------:|------------:|-------------:|----------:|----:|-------:|
|Count      |   2|              30|            1|             2|          8|    1|       1|
|Proportion |   4|              67|            2|             4|         18|    2|       2|
person Roman Gribov    schedule 17.09.2018
comment
Понятия не имею, почему возникла эта проблема. Честно говоря, я все выключил, перезагрузил компьютер, повторно импортировал .CSV, из которого были получены данные, и все заработало. Я действительно не могу это объяснить. Однако я ценю, что вы нашли время для расследования. Спасибо. - person Dylan Russell; 18.09.2018