Почему Kable добавляет несуществующий столбец в мою таблицу? - PullRequest
0 голосов
/ 17 сентября 2018

Я импортировал данные из 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. Если вы можете интерпретировать, какую таблицуЯ пытаюсь сделать (необработанный счет в верхнем ряду, доля (%) этой специальности в нижнем ряду) и знаю, как проще составить это в таблице, чем то, что я делаю, это было бы полезно.

Спасибо.

1 Ответ

0 голосов
/ 17 сентября 2018

Прекрасно работает с выборкой 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|
...