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

ConsensusClusterPlus函数pFeature子采样报错问题求助

解决ConsensusClusterPlus中pFeature<1时的the condition has length >1错误

问题代码与错误

运行以下R代码时触发错误:

pl.eset <- matrix(runif(50*30), nrow=50, ncol=30)
ConsensusClusterPlus::ConsensusClusterPlus(pl.eset, pFeature = 0.50, reps = 500,distance = "euclidean", clusterAlg = "km",verbose = F)

其中pl.eset是50行30列的无NA数值矩阵,返回错误:

Error in if (is.na(sample_x$submat)) { : the condition has length > 1

仅当pFeature=1时无错误,说明问题与特征子采样逻辑相关。

原因分析

这个错误的核心原因是矩阵维度与函数预期不匹配:
ConsensusClusterPlus默认要求输入矩阵的行代表特征,列代表样本,而你的矩阵是行代表样本、列代表特征的结构。当设置pFeature=0.5时,函数会对行(你实际的样本)进行采样,这种错位会导致子采样后的矩阵结构异常,触发条件判断的长度错误。

另外,旧版本的ConsensusClusterPlus存在子采样逻辑的bug,也可能导致该错误。

解决方案

  • 转置矩阵以匹配函数要求:将样本×特征的矩阵转置为特征×样本的结构,修改代码如下:
pl.eset <- matrix(runif(50*30), nrow=50, ncol=30)
# 转置矩阵,行变为特征,列变为样本
pl.eset_t <- t(pl.eset)
ConsensusClusterPlus::ConsensusClusterPlus(pl.eset_t, pFeature = 0.50, reps = 500,distance = "euclidean", clusterAlg = "km",verbose = F)
  • 升级到最新版本的ConsensusClusterPlus:如果转置后仍有问题,执行以下命令更新包:
install.packages("ConsensusClusterPlus")
  • 确认采样后的特征数≥1:确保pFeature与特征总数的乘积至少为1,避免出现空的子采样特征集(你的场景中30×0.5=15,满足要求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:02:49