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

如何将层次聚类cutree的randIndex结果存入向量?R语言求助

解决方案

首先确保你加载了包含randIndex函数的包(常用的是flexclust),如果还没安装先执行安装命令:

install.packages("flexclust")
library(flexclust)

你的原代码仅完成了指数计算,但没有保存结果。下面是修改后的代码,能把所有调整兰德指数存入向量方便对比:

方法1:用for循环实现

# 初始化空向量,长度对应k=2到13的12个取值
rand_indices <- numeric(length(2:13))
# 给向量命名,后续能直接看到每个值对应的分组数k
names(rand_indices) <- paste0("k=", 2:13)

for(i in 2:13){
  # 切割聚类树得到分组结果
  cluster_groups <- cutree(hclust1, k=i)
  # 计算调整兰德指数并存入向量对应位置
  rand_indices[as.character(i)] <- randIndex(stored_vector, cluster_groups)
}

# 查看最终结果
rand_indices

方法2:用sapply简化代码(更简洁)

R中可以用sapply替代for循环,一行代码完成计算:

rand_indices <- sapply(2:13, function(k) {
  cluster_groups <- cutree(hclust1, k=k)
  randIndex(stored_vector, cluster_groups)
})
# 给结果命名,方便对应k值
names(rand_indices) <- paste0("k=", 2:13)

关键说明:

  • 提前初始化向量是为了分配内存,比循环中用c()不断追加结果更高效。
  • 给向量命名后,你能直观看到每个指数对应的分组数,便于快速对比不同k值的聚类效果。
  • 确保stored_vector和cutree返回的分组结果是分类变量类型(整数或因子),randIndex才能正确计算调整兰德指数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:30:55