私は単純なループを作成して、シミュレートされたデータの効率を計算しました。これは、ループとしてながら、完璧に実行されます。関数内forループの出力が正しくありません
NSE_cal <- NULL
for(i in 1:6) {
Qobs <- flowSummary_NSE1[[i]][[3]]
Qsim <- flowSummary_NSE1[[i]][[1]]
object_cal <- NSEsums("NSE")
NSE_cal <- c(NSE_cal, object_cal)
}
#NSE_cal
#[1] 0.8466699 0.7577019 0.8128499 0.9163561 0.7868013 0.8462228
はしかし、私はこのループにかなりの数回を適用したい - 私はオブジェクトflowSummary_NSE#
を変更する必要があると私は適用するために4つの異なる変換タイプを持っています。スタートとして、私は唯一のtransformation
、指定されたので、同様にすることが必要で、関数の内部ループを置く:
badFunction <- function(transformation){
NSE_cal <- NULL
for(i in 1:6) {
Qobs <- flowSummary_NSE1[[i]][[3]]
Qsim <- flowSummary_NSE1[[i]][[1]]
object_cal <- NSEsums(transformation)
NSE_cal <- c(NSE_cal, object_cal)
}
print(NSE_cal)
}
badFunction("NSE")
# [1] 0.8462228 0.8462228 0.8462228 0.8462228 0.8462228 0.8462228
機能と全く同じ情報の入力を持っているため、除いて自分自身でループ、用何らかの理由で、それぞれの場合に同じ値をi
として出力します。
私は間違ったことをしています。しかし、私が見る限り、それは関数自体に単純なものでなければなりません。しかし、それは他の場所でエラーで包み、私は必要なデータや依存の関数を生成するコード(here)
を添付しているすべてのヘルプは非常にあなたが引数としてネストされた関数にオブジェクトを渡す必要が
は依存材料に見て時間を割いていただき、ありがとうございます;私はすでにすべての部分を通過したと確信していた。ソリューションは今明らかであるようです!関数のforループが機能していない次回の試行のためにそれを私のリストに追加します – Visser
あなたの大歓迎です。ちょうどFYIあなたの悪い機能は、それを実行する前に地球環境をクリアした場合、0.846 ..を6回出力しません。 QobsとQsimをそこから引っ張って、毎回同じ値にしていました。 –
これは完璧な意味合いがあります!私はいつも出力が正しいことを確認できるように、前にプレーンループを走らせました。次回のトラブルシューティング時に試してみることのリストに追加します。あなたの優れたアドバイスをありがとう – Visser