2013-04-15 187 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