R语言使用Mclust基于因子分析结果聚类的报错问题求助
问题根因分析
- Mclust函数传参逻辑错误:Mclust第一个入参要求是包含所有聚类特征的完整数据对象(矩阵/数据框),你将各字段单独拆分作为前几个入参传入,导致第二个本该指定聚类数
G的参数被传入了字段数据,无法转换为整数类型,触发第二个报错。 - 语法书写错误:原代码中
Data&ClinicalT1的&是R的逻辑与运算符,取数据框列应当使用$或者方括号索引。 - 特殊列名解析错误:列名包含
%等特殊字符时,用$取列需要将列名用反引号包裹,否则R解析失败会误判Data为原子向量,触发$运算符对原子向量无效的报错。 - 方括号索引错误:
Data["ClinicalT0"]返回的是单列数据框(列表类型),如果要提取列向量需要用Data[["ClinicalT0"]]或者Data$ClinicalT0。
正确代码示例
如果你的聚类特征为ClinicalT0、ClinicalT1、%Data三列,可按以下方式编写代码:
# 提取所有聚类特征组成特征数据框 feature_df <- Data[, c("ClinicalT0", "ClinicalT1", "%Data")] # 调用Mclust执行聚类 Clustering <- Mclust(data = feature_df, G = 4, modelNames = c("VII"))
如果要使用因子分析得到的4个因子作为聚类特征,只需要将上述代码中c()内的列名替换为4个因子对应的列名即可。
验证操作建议
- 执行
str(feature_df)确认提取的特征为数据框格式,不存在嵌套列表类字段 - 执行
sum(is.na(feature_df))确认特征中无缺失值,避免后续聚类流程报错
内容的提问来源于stack exchange,提问作者Filippo
相关产品推荐
相关产品推荐

