?
# missing * operator added before tan
dl <- function(lat_radians,solar_declination){
dl <- (24/pi)*(acos((-tan(lat_radians))*tan(solar_declination)))
}
dl(1,1)
#> Warning in acos((-tan(lat_radians)) * tan(solar_declination)): NaNs produced
See the FAQ: How todo a minimal reproducible example reprex
for beginners. It helps better frame the question, as well as expose potential problems such as this (unless NaN
is agreeable).
Every R
problem can be though of with advantage as the interaction of three objects— an existing object, x , a desired object,y, and a function, f, that will return a value of y given x as an argument. In other words, school algebra— f(x) = y. Any of the objects can be composites.
Applied to this problem x is a composite object of two vectors lat_radians
and solar_declination
, the proto-y_0 is a lat_radians
by solar_declination
matrix
object of dim
[4000,365], one part of f is dl
and the other part is a function to apply populate each element of y_0 by applying dl
to each element to produce y.
Here's a toy example
my_func <- function(x,y) x*y
mat <- matrix(nrow = 3, ncol = 3, byrow = TRUE)
for (i in 1:3) {
for (j in 1:3) mat[i,j] = my_func(i,j)
}
mat
#> [,1] [,2] [,3]
#> [1,] 1 2 3
#> [2,] 2 4 6
#> [3,] 3 6 9