使用FAMD进行PCA个体可视化时重复行名错误的解决方法
解决FAMD个体因子图绘制时的行名重复错误
问题原因
报错提示duplicate 'row.names' are not allowed,核心原因是你的explan_df数据集存在重复行名,fviz_famd_ind生成个体图时需要基于唯一行名处理数据,重复行名触发了冲突。
解决步骤
验证行名重复情况
先确认原数据的行名是否确实重复:# 检查是否存在重复行名 any(duplicated(rownames(explan_df)))返回
TRUE则说明行名重复是问题根源。设置唯一行名
给数据集配置唯一行名,最简单的方式是用行号作为行名:# 重置行名为唯一的行序号 rownames(explan_df) <- 1:nrow(explan_df)如果你有业务专属的唯一标识列(比如用户ID、订单号),也可以用该列值设置行名(需确保该列无重复):
# 假设存在唯一标识列unique_id,用它设置行名 rownames(explan_df) <- explan_df$unique_id # 若不需要保留该列可删除 explan_df$unique_id <- NULL重新执行分析与绘图
重新运行FAMD分析并绘制个体因子图:library(factoextra) # 重新执行FAMD df_famd <- FAMD(explan_df, graph=TRUE) # 绘制2D个体因子图 fviz_famd_ind(df_famd, col.ind = "cos2")
额外说明
df_famd$ind$cos2的矩阵类型不影响绘图,只要行名唯一,fviz_famd_ind就能正常处理。- 若原数据未主动设置行名,R默认会用1、2、…作为行名,但如果之前的合并、筛选等操作导致行名重复,同样会触发该错误,重置行名即可解决。
内容的提问来源于stack exchange,提问作者Asal Khoshravan Azar
相关产品推荐
相关产品推荐

