感谢我从阅读资料中获得的所有帮助。
当我只处理一个 data.frame 时,我对我的 R 循环不满意,因为我必须一遍又一遍地写下数据帧的名称,这会使我的 R 代码膨胀。
这是一个愚蠢的例子:
x<- rep(NA,10)
y <- 1:10
dat <- data.frame(x,y)
for(i in 2:nrow(dat)){
dat$x[i] <- dat$y[i] + dat$y[i-1]
}
所以我想摆脱的是那个dat$
-bit。外部循环可以很好地完成within()
,但我不确定你是否真的可以用 R 做到这一点。我试过了:
remove(x,y) # In order to avoid accidental usage of the initial vectors
within(dat,{
for(i in 2:nrow(dat)){
x[i] <- y[i] + y[i-1]
}})
输出如下所示:
x y i
1 NA 1 10
2 3 2 10
3 5 3 10
4 7 4 10
5 9 5 10
6 11 6 10
7 13 7 10
8 15 8 10
9 17 9 10
10 19 10 10
所以循环确实有效,只是有一个新的神奇列。
有谁知道(1)这里发生了什么以及(2)如何优雅地处理这种循环(一个更复杂的例子within()
围绕一个循环,包括几个if()
语句和计算失败顺便说一句?
提前非常感谢!skr