定義済みの列を含むデータ フレームを作成し、それに応じて列を設定できるようにしようとしています。
最初にNAが入力され、次にループに従ってさらに埋められる3つの同一の列を持つデータフレームを作成する次のコードがあります(同じループですが、異なる列を参照しています):
#Parameters
Forecast.Days = 200
MBL = 500
#Construct share of room nights by group component table
Share.of.Room.Nights = data.frame(Destination.1 = c(rep(NA, times = Forecast.Days)), Destination.2 = c(rep(NA, times = Forecast.Days)),
Destination.3 = c(rep(NA, times = Forecast.Days)))
#Destination 1
for (i in 1:length(Share.of.Room.Nights$Destination.1)){
if (Future.Confirmed.Bookings$Total[i] >= MBL){
Share.of.Room.Nights$Destination.1[i] = Future.Confirmed.Bookings[ ,3][i]/Future.Confirmed.Bookings$Total[i]
} else {
Share.of.Room.Nights$Destination.1[i] = Confirmed.Bookings[, 2][i]/Confirmed.Bookings$Total[i]
}
}
#Destination 2
for (i in 1:length(Share.of.Room.Nights$Destination.2)){
if (Future.Confirmed.Bookings$Total[i] >= MBL){
Share.of.Room.Nights$Destination.2[i] = Future.Confirmed.Bookings[ ,4][i]/Future.Confirmed.Bookings$Total[i]
} else {
Share.of.Room.Nights$Destination.2[i] = Confirmed.Bookings[ ,3][i]/Confirmed.Bookings$Total[i]
}
}
#Destination 3
for (i in 1:length(Share.of.Room.Nights$Destination.3)){
if (Future.Confirmed.Bookings$Total[i] >= MBL){
Share.of.Room.Nights$Destination.3[i] = Future.Confirmed.Bookings[ ,5][i]/Future.Confirmed.Bookings$Total[i]
} else {
Share.of.Room.Nights$Destination.3[i] = Confirmed.Bookings[ ,4][i]/Confirmed.Bookings$Total[i]
}
}
初期データ フレームで作成する Destination 列の数のパラメーターを設定できるようにしたいと考えています。この場合は 3 (最大は 6) であり、必要な数のループのみを実行するコードを用意します (コードは 6 列分存在しますが、この場合は 3 列しか実行されません。
これは可能ですか?
ありがとう