如何让循环创建新对象作为我的结果?

时间:2013-06-11 20:05:56

标签: r loops output plyr

我是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 / matrix / whatever:(1)tab.res [1993]和(2)tab.res [2009],但我想这是不可取的。代码......任何人都可以告诉我为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

一个非常小的变化:“[。]&lt; - ”到“[[。]]&lt; - ”

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))
}