Вероятно, это будет работать, если вы используете as.formula(paste(col_name, '~1'))
Вот отдельный пример:
library(raster)
library(gstat)
data(meuse)
r <- raster(system.file("external/test.grd", package="raster"))
gfun <- function(v) {
mg <- gstat(formula = as.formula(paste(v, "~1")), locations= ~x+y, data=meuse, nmax=7, set=list(idp = .5))
z <- interpolate(r, mg)
mask(z, r)
}
vars <- c('cadmium', 'copper', 'lead', 'zinc')
x <- sapply(vars, gfun)
s <- stack(x)
s
#class : RasterStack
#dimensions : 115, 80, 9200, 4 (nrow, ncol, ncell, nlayers)
#resolution : 40, 40 (x, y)
#extent : 178400, 181600, 329400, 334000 (xmin, xmax, ymin, ymax)
#coord. ref. : +init=epsg:28992 +towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs
#names : cadmium, copper, lead, zinc
#min values : 0.3131223, 17.3430502, 42.3218862, 123.9369493
#max values : 11.91185, 97.28761, 470.70461, 1387.50615