Approaches for IDW and nearest neighbours

Let’s try to stay in {terra}!
It provides terra::interpolate() for a SpatRaster + gstat object.

To achieve this, provide d as a data frame to gstat::gstat() with coordinate columns.

d2 <- data.frame(as.data.frame(d), crds(vect(d)))
class(d2)
## [1] "data.frame"