f1 <- function(x) {
zx1 <- sample(1:nrow(zone4[[x]]), nrow(zone4[[x]]), replace=F)
zone4[[x]]$randnums <- zx1
}
f1(1)
## DOESN'T UPDATE zone4[[1]]
zx2 <- sample(1:nrow(zone4[[1]]), nrow(zone4[[1]]), replace=F)
zone4[[1]]$randnums <- zx2
## DOES UPDATE zone[[1]]
上記のような関数f1()を作成すると、オブジェクト'zone4[[x]]'は更新されません。ただし、上記と同じコマンドを実行し、以下に示すように明示的に「x」と指定すると、オブジェクト「zone4[[x]]」が更新されます。なぜこれができるのでしょうか?コードの反復を実行したいので、知りたいです。上記の関数f1()の定義内に「names(zone4 [[x]])」と書くと、得られる出力は、関数が想定どおりに機能したことを示しますが、再度クエリを実行すると、zone [[ x]]は変更されていないようです。ご協力ありがとうございました。アイデアは、特定の年のデータセットのサブセットごとに乱数を作成し、別の変数であるゾーンを作成することです。データセットは元々単一のデータフレームでしたが、split()関数を使用して、年とゾーン(4つあります)に従ってデータを分離しました。