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