在 R 中使用赋值更新向量

update a vector using assign in R

我正在 R 中实现 k-means。 在一个循环中,我启动了几个向量,这些向量将用于存储属于特定集群的值,如下所示:

    for(i in 1:k){
    assign(paste("cluster",i,sep=""),vector())      
    }

然后我想添加到特定的 "cluster" 向量,具体取决于我为变量 getIndex 获得的值。因此,如果 getIndex 等于 2,我想将变量 minimumDistance 添加到名为 cluster2 的向量中。这就是我正在尝试做的事情:

minimumDistance <- min(distanceList)
getIndex <- match(minimumDistance,distanceList)
clusterName <- paste("cluster",getIndex,sep="")
name <- c(name, minimumDistance)

但显然上面的代码不起作用,因为为了附加到我命名的向量,我需要像实例化向量时那样使用赋值。但我不知道如何使用赋值,在使用粘贴时,在附加到向量时。

我不能使用 vector[i] 之类的索引,因为我不知道要添加到那个特定向量的哪个索引。

我需要使用 vector <- c(vector,newItem) 格式,但我不知道如何在 R 中执行此操作。或者如果有任何其他选项,我将非常感谢。如果我使用 Python 我会简单地使用粘贴然后使用附加但我不能在 R 中这样做。提前感谢您的帮助!

你可以这样做:

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)) 
}

如果你想要一个更完整的代码示例,这个link听起来像一个类似的问题emclustr::em_clust_mvn