【发布时间】:2021-02-18 20:08:00
【问题描述】:
您好,我有几个数据框,每个数据框代表接受某种处理的样本,我将它们组合成一个列表,我的想法是我想在列表中的每个元素/数据框上测试 Kmeans 聚类方法。
假设我将这 7 个数据帧绑定到一个列表中。 以下是其中 2 个作为示例数据 https://drive.google.com/drive/folders/1B8JQY94Z-BHTZEKlV4dvUDocmiyppBDa?usp=sharing
每个数据框都有相同的结构:多行样本和 107 列变量,但第 1 列和第 2 列只是数据标签,例如实际药物治疗。
我想对这些数据帧中的每一个进行 Kmeans 聚类,希望从中找到有代表性的样本用于下游处理。
所以我构建了一个名为 Kmeans.list 的输出列表来存储结果。我将其放入循环中是否正确?特别是 mylist[[i]][,-c(1:2)],它的目的是获取该列表中的第 i 个数据帧,并且只获取实际的数值变量列,然后 scale() 将其用于 kmeans 聚类。
我没有成功测试的原因是我也对输出感到困惑。 kmeans() 函数输出一个列表,我对其中的“中心”特别感兴趣。我真的只想将每个中心结果存储到一个列表中,这样我就可以在下游迭代其他内容。这可能吗,或者我必须将所有 kmeans 输出存储到此列表中,然后以某种方式取出中心并绑定它们。
无论哪种方式,我都必须能够以唯一的名称存储每个 kmeans 输出,以便将它们区分开来。如何确保输出列表中的每个元素都以输入数据框命名?就像在名称中一样
mylist <- list(df1,df2,df3...)
#kmeans this in a loop
#store output in a list
Kmeans.list <- list()
for (i in length(mylist)) {
Kmeans.list[i] <- kmeans(scale(mylist[[i]][,-c(1:2)]),centers =15,nstart=50,iter.max = 100)
}
【问题讨论】: