Quero calcular graus-dias crescentes com várias bases, usando temperatura diária mínima e temperatura diária máxima. Gostaria de fazer isso sem um loop for, se possível, para minimizar meu código.
bases <- c(40,45,50)
tmin <- runif(10,30,70)
tmax <- runif(10,55,95)
Quero encontrar o número de graus-dia de crescimento para cada base para cada um dos dez dias para os quais tenho dados falsos de temperatura. Deve haver 10 valores de saída para cada uma das 3 bases.
Tentei o mapply da seguinte forma:
gdd_func <- function(tmin,tmax,bases){
(tmin + tmax)/2 - bases}
test <- mapply(gdd_func,tmin,tmax,bases)
Isso produz uma saída incorreta onde eu honestamente não sei o que está fazendo. Quero que a saída seja igual a executar a função acima 3 vezes diferentes com as diferentes bases. Cada saída teria 10 valores gdd correspondentes às diferentes bases. Como eu faria isso usando uma função apply de algum tipo? Ou preciso de algo mais?
Acho que você deve encapsular
tmin
etmax
dentro de umlist
, por exemplo,Só por diversão e mesmo que essa pergunta já tenha uma boa resposta, uma alternativa de loop/*aplicação gratuita, explorando a reciclagem:
O resultado acima produz a mesma saída que a resposta de @ThomasIsCoding.
outer
é provavelmente a melhor opção aqui.