2013-04-15 185 views
0

我是R新手,我的大部分经验都是用Java编写的。我正在尝试执行以下操作:R kmeans对象的集合

clusterWeeks <- function() 
{ 
    kmV = list()    #a list of kmeans objects from each week 
    for(i in 1:5) 
    { 
    windows() 
    kmV.append(clusterData(i))  #clusterData(i) returns a kmeans object 
    } 
} 

由于某种原因,这不起作用。然后我希望能够通过kmV[1], kmV[2], ... kmV[5]

  1. 访问对象这个任务的R中适当的数据结构是什么?

回答

3

您需要创建一个列表来容纳每个单独的对象。否则,你只是覆盖,只返回最后一个:

clusterWeeks <- function() 
{ 
    kmV = vector("list", 5)   # a 5 element list of empty items 
    for(i in 1:5) 
    { 
    windows() 
    kmV[[i]] <- clusterData(i) #clusterData(i) returns a kmeans object 
    } 
} 

显然你是从语言,其中object.function是一个可以接受的语法来了,但在R.

0

基于您的代码不工作,这里是我会做什么:

clusterWeeks <- function(){ 
    kmV <- c() 
    for(i in 1:5) 
    { 
    kmV <- c(kmV, i) 
    } 
    return(kmV) 
} 

小例子:

test <- clusterWeeks() 
test[2] 
2 
+1

使用' c(旧的,新的)'对于小列表来说可以,但是如果列表已经被预先分配,则按位置分配会更有效率。 –

+0

迪文,好点,谢谢。 – Stedy