2013-06-11 24 views
0

我是R新手,我正在學習如何製作循環。我不知道如果我試圖用這個循環做是有道理的:我如何使循環創建新的對象作爲我的結果?

require(plyr) 

year = c("1993", "2009") 

for (i in 1:2) { 

    temp <- subset(census.long,trt=="RIL" & dbh > 50 & date==year[i]) 

    tab.res[year[i]] <- ddply(.data=temp, .(spcode), 
       .fun=summarise, 
       volume = sum(volume)) 
} 

我想有兩個結果作爲新data.frames /矩陣/什麼:(1)tab.res [1993]和( 2)tab.res [2009],但我想這是尼克的方式去與代碼...任何人都可以告訴我爲什麼這不起作用?

回答

0

一個非常微小的變化的變化: 「[。] < - 」 到 「[[]] < - 」

require(plyr) 
year = c("1993", "2009") 
for (i in 1:2) { 
    temp <- subset(census.long, trt=="RIL" & dbh > 50 & date==year[i]) 
    tab.res[[ year[i] ]] <- ddply(.data=temp, .(spcode), 
       .fun=summarise, 
       volume = sum(volume)) 
} 

假設ddply代碼單獨工作這在目前我們也沒有辦法的測試。你也可以這樣做:

for (year in c("1993", "2009")) { 
    temp <- subset(census.long,trt=="RIL" & dbh > 50 & date==year) 
    tab.res[[year]] <- ddply(.data=temp, .(spcode), 
       .fun=summarise, 
       volume = sum(volume)) 
}