r - 用于创建从 R 中的两个不同数据帧生成的矩阵列表的循环
问题描述
我有两个数据框。df1 和 df2。两者都使用聚类方法使用 c 列
,我最终得到了 10 个聚类。每个 df 的相同集群是正确的。这意味着例如两个 df 的第 4 行进入同一个集群。
我在两个 dfs 中添加了一个簇列,显示了为每一行分配的簇。
我想创建一个列表。
此列表包含 10 个矩阵,例如。
矩阵 1,是一个 2*c 矩阵。它的第一行是通过对簇 1 中的 df1 的那些行的 colmeans 获得的。它的第二行是通过对簇 1 中的 df2 的那些行的 colmeans 获得的。
和矩阵 2 ,簇 2 的 colmeans 等等。
这就是我所做的。但我只得到第 10 个矩阵,而不是矩阵 1 到 10 的列表。
我将不胜感激。
k=10
for(i in 1:k){
df1.mean.vec <- colMeans(subset(df1, clster == i))
df2.mean.vec <- colMeans(subset(df2, clster == i))
Mean.mat <- as.matrix(rbind(df1.mean.vec, df2.mean.vec), row.names= FALSE)
Mean.list <- list()
Mean.list[[i]] <- Mean.mat
names(Mean.list)[i] <- i
}
解决方案
Mean.list
应该在循环外初始化,它可以是长度list
为NULLk
Mean.list <- vector('list', k)
for(i in 1:k){
df1.mean.vec <- colMeans(subset(df1, clster == i))
df2.mean.vec <- colMeans(subset(df2, clster == i))
Mean.mat <- as.matrix(rbind(df1.mean.vec, df2.mean.vec), row.names= FALSE)
Mean.list[[i]] <- Mean.mat
rm(Mean.mat)
gc()
names(Mean.list)[i] <- i
}
推荐阅读
- python - 是否可以使用 Python 的请求库设置代理链?
- c# - Unity shader/C# - 如何改变效果的颜色?
- r - 我觉得很难理解数组维度的概念
- twig - loop.index 返回 NaN
- qt - QML TableView 鼠标区域不会将点击传播到选择模型
- ruby-on-rails - 在两个不同的地方,从两个不同的控制器渲染部分轨道
- visual-studio-code - textMateRules 用于参数和参数用法语法高亮
- python - 从一堆单独的系列中构建一个 Pandas 多索引数据框
- javascript - 在对象数组中添加对象(对象是多维的)
- android - 安卓。需要访问用户的电子邮件