我对R很新,我来自C ++背景,所以我倾向于使用for循环,但这在R中看起来非常慢。这是一个特殊的例子:
dat1 <- cbind(dat1, data.frame(tot.hh = 0, below.18 = 0, above.18 = 0, below.65 = 0, above.65 = 0))
for(i in 1:length(dat1$hb030)){
tmp <- subset(dat2, dat2$hb030 == dat1[i,]$hb030 & dat2$hb020 == dat1[i,]$hb020)
dat1[i,]$tot.hh <- nrow(tmp)
for(j in 1:length(tmp)){
tmp.age <- 2006 - tmp[j,]$rb080
ifelse(tmp.age<18, dat1[i,]$below.18 <- dat1[i,]$below.18+1, dat1[i,]$above.18 <- dat1[i,]$above.18+1)
ifelse(tmp.age<65, dat1[i,]$below.65 <- dat1[i,]$below.65+1, dat1[i,]$above.65 <- dat1[i,]$above.65+1)
}
}
这里的想法是,有一个家庭数据集和家庭中个人的个人数据之一,我正在尝试向家庭添加信息,例如有多少成员及其年龄。我的代码可以工作,但需要永远(超过一个小时,这是一个相当简单的计算)。还有一些明显的低效率,如子集,但我现在还没有找到更好的方法。我想知道是否存在针对这类问题的矢量化方法。