问题描述
我在维护从矩阵创建的数据帧的行名称时遇到问题。
用于矩阵创建的数据框
data <- structure(list(experimental_treatment = c("Hanauma Bay_High","Hanauma Bay_High","Hanauma Bay_Low","Hanauma Bay_Low"),size_class_start = c(1,1,2,3,4,4),size_class_end = structure(c(6L,5L,4L,3L,2L,1L,6L,1L),.Label = c("M","5","4","3","2","1"),class = c("ordered","factor")),mean_transition_prob = c(0.21,0.383,0.131,0.018,0.258,0.021,0.247,0.342,0.22,0.056,0.114,0.003,0.085,0.254,0.345,0.268,0.045,0.064,0.061,0.196,0.639,0.041,0.243,0.249,0.039,0.469,0.006,0.292,0.374,0.19,0.013,0.124,0.023,0.119,0.679,0.109,0.071,0.322,0.647,0.01),se = c(0.047,0.095,0.06,0.014,0.016,0.049,0.053,0.059,0.02,0.033,0.032,0.046,0.067,0.015,0.024,0.073,0.063,0.082,0.072,0.01,0.093,0.038,0.047,0.065,0.066,lower = c(0.16299632343243,0.287969216985335,0.0716740001360479,0.00356296068462614,0.201672119783091,0.00520630168242059,0.19789790899917,0.289096578951424,0.160988897536635,0.0355753712618346,0.0808289879307994,0.000141022456831538,0.0529632671906531,0.189261855198722,0.29881664456508,0.200221714470105,0.0302304486763972,0.0407802348303854,0.0294406461249042,0.156929507105785,0.579200863042329,0.016803645919432,0.170073834106072,0.186076233324423,0.0180260118371663,0.387021127200649,0.000302190978924726,0.246673304839509,0.329141072104855,0.117833245681168,0.00335698138421659,0.0926206869897249,0.00723523157134712,0.0792264693782334,0.586346919298164,0.0708834839613996,0.023280214844383,0.00619897896039811,0.256781523753838,0.580477870696779,0.000470074856105127),upper = c(0.256227256018422,0.477800927572689,0.191190940759196,0.0324218878002223,0.314484366827941,0.0370159205398016,0.296164988887257,0.395288872198733,0.279866293024438,0.0756151049286416,0.146454774058845,0.00591958360377452,0.117055602828217,0.317881001944135,0.39178164603321,0.335212295963906,0.0605149170689686,0.0862760422258917,0.0933587766745186,0.234701084524806,0.697927564086098,0.0645816354658493,0.316797859015621,0.311129454506265,0.0606776918665373,0.550197788143267,0.0126848220080883,0.337525829359625,0.419199476235693,0.261459683611762,0.0229056448784097,0.156297061928024,0.0382193138831983,0.158147267995504,0.772238939287694,0.146288233210318,0.118133926569758,0.0362252634638443,0.386652819680505,0.713461523242615,0.0197319453459151),Site_long = c("Hanauma Bay","Hanauma Bay","Hanauma Bay"),Shelter = c("High","High","Low","Low"),sample_size = c(206L,206L,171L,124L,111L,94L,103L,57L,65L,65L
),mean_transition_prob_full = c("0.21 ± 0.047","0.383 ± 0.095","0.131 ± 0.06","0.018 ± 0.014","0","0.258 ± 0.056","0.021 ± 0.016","0.247 ± 0.049","0.342 ± 0.053","0.22 ± 0.059","0.056 ± 0.02","0.114 ± 0.033","0.003 ± 0.003","0.085 ± 0.032","0.254 ± 0.064","0.345 ± 0.046","0.268 ± 0.067","0.045 ± 0.015","0.064 ± 0.023","0.061 ± 0.032","0.196 ± 0.039","0.639 ± 0.059","0.041 ± 0.024","0.243 ± 0.073","0.249 ± 0.063","0.039 ± 0.021","0.469 ± 0.082","0.006 ± 0.006","0.292 ± 0.045","0.374 ± 0.045","0.19 ± 0.072","0.013 ± 0.01","0.124 ± 0.032","0.023 ± 0.015","0.119 ± 0.039","0.679 ± 0.093","0.109 ± 0.038","0.071 ± 0.047","0.021 ± 0.015","0.322 ± 0.065","0.647 ± 0.066","0.01 ± 0.01")),row.names = c(NA,-48L),class = c("tbl_df","tbl","data.frame"))
矩阵创建
# Hanauma Bay only
col <- as.character(c("1","4"))
row <- as.character(c("1","≥5","M"))
sample_size_row <- as.character(c("n"))
n_size <- data %>% group_by(experimental_treatment,size_class_start) %>%
slice_head() %>%
ungroup() %>%
dplyr::select(size_class_start,sample_size)
n_size <- matrix(n_size$sample_size,nrow = 1,ncol = 4,dimnames = list(sample_size_row,col))
# Create matrix and print
HAN_Matrix <- matrix(data$mean_transition_prob_full,nrow = 6,dimnames = list(row,col))
HAN_Matrix <- rbind(HAN_Matrix,n_size)
将矩阵转换为 HTML 输出的数据帧
HAN_Matrix <- as.data.frame(HAN_Matrix)
HAN_Matrix_table <- tab_df(HAN_Matrix,col.header = col,show.rownames = TRUE)
想要的输出,但仍需要以 HTML 格式打印
在这里您可以看到我的矩阵包含所需的行名称。如上所述,当我将矩阵转换为数据帧时,情况也是如此。但是,当我使用 sjplot::tab_df() 创建数据帧的 HTML 输出时,结果输出不会像数据帧中那样保留行名称。相反,它索引行名 (1-7) 而不是维护行名 (1,≥5,M,n)
输出
我想我需要做的就是使用 tab_df() 中的 show.rownames 参数强制它打印行名称。对此是否有任何快速解决方案,或者我是否需要在 sjplot 包或其他包中使用不同的函数来完成这项工作?感谢所有输入。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)