You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言生成热图:创建聚类数据框丢失原行名的问题及解决

R中保留聚类结果原行名的解决方法

你遇到的问题本质是base R的data.frame()不会自动将输入命名向量的名称设为数据框的行名——不管k取2还是4+,只是k=2时的ifelse操作可能让你误以为行名被保留了,实际是偶然情况。cutree()返回的是带原行名的命名向量,但用paste()生成新字符串向量后,直接传入data.frame()时,默认会生成数字序列的行名,覆盖了原有的名称。

以下是几种稳定保留原行名的解决方法:

  • 方法1:创建数据框后手动赋值行名
# 生成聚类结果
hclust_col <- cutree(tree = as.dendrogram(hclust_cyto), k = 4)
# 创建带聚类名称的数据框
hclust_col_1 <- data.frame(cluster = paste("cluster", hclust_col))
# 将原向量的名称设置为数据框行名
rownames(hclust_col_1) <- names(hclust_col)
  • 方法2:创建数据框时直接指定行名参数
hclust_col <- cutree(tree = as.dendrogram(hclust_cyto), k = 4)
hclust_col_1 <- data.frame(
  cluster = paste("cluster", hclust_col),
  row.names = names(hclust_col)
)
  • 方法3:tidyverse风格(需加载tibble包)
    如果你习惯用tidyverse工具链,可以更直观地处理行名:
library(tibble)
hclust_col <- cutree(tree = as.dendrogram(hclust_cyto), k = 4)
# 将命名向量转为带列名的数据框,处理聚类名称后再转回行名
hclust_col_1 <- enframe(hclust_col, name = "sample_id", value = "cluster") %>%
  mutate(cluster = paste("cluster", cluster)) %>%
  column_to_rownames(var = "sample_id")

内容的提问来源于stack exchange,提问作者Someone_1313

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:43:33