【发布时间】:2018-09-17 03:03:24
【问题描述】:
我已从 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
注意有七列。我尝试使用以下代码在 RMarkdown 中生成一个 kable 表:
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 都在添加第一列数据,而这些数据实际上并不(也不应该)存在于 sc_data_specialty_1_table 中。
当我昨天处理这个特定的降价文档时,我没有遇到这个问题。从昨天到今天,我没有更改任何代码。这发生在我构建的 Markdown 中的多个表上。
- 有人知道为什么要添加这个额外的列吗?
- 如果您能解释我要制作的表格类型(最上面一行的原始计数,最下面一行中该专业的比例 (%))并且知道将它们放在一个表格中的更简单的方法比我正在做的,这会很有帮助。
谢谢。
【问题讨论】:
-
您使用的是
kableExtra包吗?否则我找不到kable_styling。没有它我无法重现问题,因此问题可能存在。
标签: r r-markdown kable