encontrar ubicaciones dentro de cierta distancia lat / lon en r

Tengo un conjunto de datos en cuadrícula, con datos disponibles en las siguientes ubicaciones:

lon <- seq(-179.75,179.75, by = 0.5)
lat <- seq(-89.75,89.75, by = 0.5)

Me gustaría encontrar todos los puntos de datos que están dentro de los 500 km de la ubicación:

mylat <- 47.9625
mylon <- -87.0431

Mi objetivo es utilizar el paquete de geosfera en R, pero el método que he escrito actualmente no parece muy eficiente:

require(geosphere)
dd2 <- array(dim = c(length(lon),length(lat)))
for(i in 1:length(lon)){
  for(ii in 1:length(lat)){
    clon <- lon[i]
    clat <- lat[ii]
    dd <- as.numeric(distm(c(mylon, mylat), c(clon, clat), fun = distHaversine))
    dd2[i,ii] <- dd <= 500000
  }
}

Aquí, recorro cada cuadrícula en los datos y encuentro si la distancia es inferior a 500 km. Luego almaceno una variable con VERDADERO o FALSO, que luego puedo usar para promediar los datos (otra variable). De este método, quiero una matriz con VERDADERO o FALSO para las ubicaciones dentro de los 500 km desde el lat y el lon mostrados. ¿Existe un método más eficiente para hacer esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta