ただ読んでくれたすべての助けに感謝します。
1つの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$
ビットです。ループの外側では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