我在R中实现k-means 在循环中,我启动了几个用于存储属于特定集群的值的向量,如下所示:
for(i in 1:k){
assign(paste("cluster",i,sep=""),vector())
}
然后我想添加到特定的"群集"向量,取决于我获得的变量getIndex的值。因此,如果getIndex等于2,我想将变量minimumDistance添加到名为cluster2的向量中。这就是我想要做的事情:
minimumDistance <- min(distanceList)
getIndex <- match(minimumDistance,distanceList)
clusterName <- paste("cluster",getIndex,sep="")
name <- c(name, minimumDistance)
但显然上面的代码不起作用,因为为了附加到我命名的向量,我需要像实例化向量时那样使用assign。但我不知道如何使用assign,当使用paste时,也会附加到vector。
我无法使用vector [i]之类的索引,因为我不知道我想要添加的特定向量的索引。
我需要使用向量&lt; - c(vector,newItem)格式,但我不知道如何在R中执行此操作。或者,如果有任何其他选项,我会非常感激,非常感谢。如果我使用的是Python,我会简单地使用粘贴,然后使用追加,但我不能在R中这样做。先谢谢你的帮助!
答案 0 :(得分:0)
您可以这样做:
out <- list()
for (i in 1:nclust) {
# assign some data (in this case a list) to a cluster
assign(paste0("N_", i), list(...))
# here I put all the clusters data in a list
# but you could use a similar statement to do further data manipulation
# ie if you've used a common syntax (here "N_" <index>) to refer to your elements
# you can use get to retrieve them using the same syntax
out[[i]] <- get(paste0("N_", i))
}
如果您想要一个更完整的代码示例,此链接听起来像一个类似的问题emclustr::em_clust_mvn