私は、Rデータフレームを反復して更新するための "forループ"を作成しようとしています。data.frameを更新するためのループ
はここに私のコードです:
datalist = list()
for (i in 1:5) {
dat <- data.frame(ID=LETTERS[seq(from = 1, to = 20)],nutrition=rnorm(20, mean=50, sd=10),
Stage=c(rep("A1",5), rep("B1",15)))
dat$ADG<-dat$nutrition*0.05
dat$M_weight<-dat$nutrition*0.5+dat$ADG*100
dat$Age<-dat$M_weight*1.1+dat$ADG*0.6
dat$Stage<-as.character(dat$Stage)
dat$Stage[dat$ADG>=3]<-"C1"
dat$i <- i # maybe you want to keep track of which iteration produced it?
datalist[[i]] <- dat # add it to your list #
}
big_data = do.call(rbind, datalist)
反復2から、私はADGが3以上であるが、これは反復1には適用されない場合に「C1」更新「ステージ」を持っていると思います。
ありがとうございました!私はすべての返信に感謝!
意味が明確ではありません。ループは、イテレータ 'i'が1つの場所でのみ使用されるため、必要な処理を行っています。以前の繰り返しに依存したい場合は、 'if(i> 1){i-1でブロックする}'ブロックを追加してください。 – Frank
こんにちは@フランク。ありがとう。はい、私は以前の反復に多少依存したいので、あなたが言及したブロックを試してみましょう。ありがとう、私はあなたの答えに感謝します。 – Joanna
@ Joannaあなたのコードは 'ADG'に基づいて' Stage'を更新するだけですが、 'ADG'は決して変更しません。反復1の後のデータは元のデータとどのように異なるはずですか? – CPak