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

4

1 回答 1

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))
}
于 2013-06-11T20:14:15.937 回答