First, R has a data structure that is much much much better suited for this kind of task: the list. You will make your life a lot easier if you just make a list tmin that you can index with tmin[[i]]. Bonus points, you can even avoid for loops altogether and rewrite your previous code as:
tmax <- lapply(1:365,
function(i) ncvar_get(tmax2011, "tmax", start = c(1,1,i), count = c(720, 360, 1)))
and same for tmin.
That being said, to make the element-wise average of two matrices, you can simply add them (element-wise), it works:
tmin1 <- matrix(1:4,2)
tmax1 <- matrix(11:14,2)
tmin1
#> [,1] [,2]
#> [1,] 1 3
#> [2,] 2 4
tmax1
#> [,1] [,2]
#> [1,] 11 13
#> [2,] 12 14
(tmin1 + tmax1)/2
#> [,1] [,2]
#> [1,] 6 8
#> [2,] 7 9
Created on 2020-12-10 by the reprex package (v0.3.0)
So if you switch to lists, you can use the package purrr to easily do the averaging for every pair of matrix:
library(purrr)
map2(tmin, tmax, function(A, B) (A+B)/2) # A and B are matrices extracted from the lists
And if you want to stay with generating variable names on the fly, you can use paste0() to build an expression as a character string, then convert it to an expression with str2expression(), and evaluate it with eval(). These are advanced functionalities of the R language, that are a bit dangerous to use for routine computations.
eval(str2expression(paste0("(tmax", i, " + tmin", i, ")/2")))