使用R

时间:2015-12-02 21:43:19

标签: r vector append paste assign

我在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中这样做。先谢谢你的帮助!

1 个答案:

答案 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