Я создал простой цикл для вычисления эффективности некоторых имитируемых данных. Он выполняет прекрасно, пока в цикле:неправильный вывод из функции внутри цикла
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#
и у меня есть четыре различных типа преобразования для применения. В начале, я поставил петлю внутри функции, только с 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)
Любая помощь будет высоко ценится
Благодарим Вас за время, чтобы посмотреть в зависимых материалов ; Я был уверен, что уже прошел через каждую часть. Решение кажется довольно очевидным сейчас! Я добавлю это в свой список вещей, чтобы попробовать в следующий раз, когда цикл цикла в функции не работает – Visser
Ваш приветствуется. Просто FYI ваша плохая функция не будет выводить 0.846 .. шесть раз, если вы очистили глобальную среду перед ее запуском. Это отвлекало Qobs и Qsim оттуда, следовательно, одно и то же значение каждый раз. –
Это имеет смысл! Я всегда запускал простую петлю перед тем, чтобы подтвердить вывод. Я добавлю это к списку вещей, которые нужно попробовать при устранении неполадок в следующий раз. Спасибо за отличный совет – Visser