2013-04-15 7 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 (old, new) 'будет отлично подходит для небольших списков, но если список уже предварительно выделен, более эффективно назначать по местоположению. –

+0

DWin, хороший момент, спасибо. – Stedy