如何将factoextra包get_dist的dist结果转为data.frame?
解决dist类型转data.frame的问题
直接用as.data.frame()转换dist对象会报错,因为dist是一种压缩存储的三角矩阵结构,无法直接被转换为数据框。需要先将其转为完整矩阵,再转成数据框,具体方法如下:
方法1:基础R + 管道实现
沿用你提供的代码,只需在as.data.frame()前先调用as.matrix():
library(factoextra) data("USArrests") res.dist <- get_dist(USArrests, stand = TRUE, method = "pearson") # 转换为数据框 res_dist_df <- res.dist %>% as.matrix() %>% as.data.frame()
方法2:转成长格式数据框(可选)
如果需要得到每一对变量的距离记录(长格式),可以结合tidyr包处理:
library(tidyr) res_dist_long_df <- res_dist_df %>% rownames_to_column(var = "变量1") %>% pivot_longer(cols = -变量1, names_to = "变量2", values_to = "距离值")
说明
- 转换后的宽格式数据框,行名和列名均为原数据集的变量名,单元格对应变量间的距离值;
- 长格式适合后续做可视化或进一步统计分析。
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

