如何在不转数据框的前提下为矩阵行名列添加表头?
解决方案:给矩阵行名区域添加“Years”表头(保留矩阵格式)
矩阵本身的结构中没有行名对应的表头属性,无法直接通过colnames类命令设置左上角的标签,但可以通过自定义输出逻辑实现显示“Years”的效果,同时完全保留矩阵对象的格式。
方法一:基础R控制台自定义输出
适合在R控制台中直接输出带表头的结果,矩阵对象保持不变:
# 生成并处理目标矩阵 matrix1 <- as.matrix(table(df$yrsvar)[c("< 1", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "10+", "Don't Know")]) colnames(matrix1) <- "Percent" matrix1 <- round(prop.table(matrix1) * 100, 2) # 自定义打印逻辑,添加Years表头 cat(sprintf("%-12s %s\n", "Years", colnames(matrix1))) cat(strrep("-", 22), "\n", sep = "") for (i in seq_len(nrow(matrix1))) { cat(sprintf("%-12s %.2f\n", rownames(matrix1)[i], matrix1[i, 1])) }
输出效果:
Years Percent ---------------------- < 1 12.39 1 2.65 2 8.85 3 7.96 4 6.19 5 5.31 6 2.65 7 2.65 8 4.42 9 1.77 10 7.08 10+ 36.28 Don't Know 1.77
方法二:RMarkdown中格式化输出
如果是在RMarkdown文档中使用,可借助knitr包生成规范表格,矩阵对象仍保持原格式:
library(knitr) # 处理矩阵的代码与上述一致 matrix1 <- as.matrix(table(df$yrsvar)[c("< 1", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "10+", "Don't Know")]) colnames(matrix1) <- "Percent" matrix1 <- round(prop.table(matrix1) * 100, 2) # 生成带Years表头的表格 kable(matrix1, row.names = TRUE, col.names = c("Years", "Percent"), align = "lr")
该代码会在RMarkdown中渲染出左上角带有“Years”的规整表格,同时matrix1始终是矩阵类型。
内容的提问来源于stack exchange,提问作者aj Likosar
相关产品推荐
相关产品推荐

