我正在尝试创建一个当变量处于不同范围时返回不同值的函数。
nhpp_lambda <- function(t) {
for (t in 1:365) {
if (t >= "1" && t <= "59")
lambda = 20.83
else if (t >= "60" && t <= "151")
lambda = 11.02
else if (t >= "152" && t <= "243")
lambda = 11.68
else if (t >= "244" && t <= "334")
lambda = 26.41
else if (t >= "335" && t <= "365")
lambda = 20.83
}
return(lambda)
}
这怎么行不通?它仍然总是返回 20.83??
最佳答案
在您定义的函数中,您在循环完成后返回 lambda
的值,并且在循环的最后一次迭代中,该值始终为 20.83。如果删除循环,它将起作用,例如,
nhpp_lambda <- function (t) {
if (t >= 1 && t <= 59)
lambda = 20.83
else if (t >= 60 && t <= 151)
lambda = 11.02
else if (t >= 152 && t <= 243)
lambda = 11.68
else if (t >= 244 && t <= 334)
lambda = 26.41
else if (t >= 335 && t <= 365)
lambda = 20.83
return(lambda)
}
nhpp_lambda(5)
nhpp_lambda(55)
nhpp_lambda(120)
nhpp_lambda(285)
nhpp_lambda(340)
关于r - 如果函数中的格子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52553494/