Я работаю с большим набором данных, и я пытаюсь запустить геопространственный анализ на локальной машине с 8 ГБ оперативной памяти. Похоже, я превысил ресурсы своей машины, и мне интересно, могу ли я оптимизировать свою модель, чтобы я мог запускать ее на своей машине.Оптимизация расстояния distHaversine модель для больших df в R
area <- data.frame(area = c('Baker Street','Bank'),
lat = c(51.522236,51.5134047),
lng = c(-0.157080, -0.08905843),
radius = c(100,2000)
)
stop <- data.frame(station = c('Angel','Barbican','Barons Court','Bayswater'),
lat = c(51.53253,51.520865,51.490281,51.51224),
lng = c(-0.10579,-0.097758,-0.214340,-0.187569),
postcode = c('EC1V','EC1A', 'W14', 'W2'))
library(geosphere)
datNew = lapply(1:nrow(area), function(i) {
df = stop
df$dist = distHaversine(df[,c("lng", "lat")],
area[rep(i,nrow(df)), c('lng','lat')])
df$in_circle = ifelse(df$dist <= area[i, "radius"], "Yes", "No")
df$circle_id = area[i, "area"]
df
})
datNew = do.call(rbind, datNew)
require(dplyr)
datNew <- datNew %>%
group_by(station) %>%
slice(which.min(dist))
Можно вычислить расстояние, а затем найти минимальное расстояние в station
по station
, так что я не в конечном итоге с умножением числа stations
по количеству area
? Или есть другое решение, которое позволило бы мне запустить это менее ресурсоемким способом или разделить задания, чтобы он вписывался в ОЗУ?
Проблема, которую я имею в том, что 'df', созданный функцией, слишком велик, чтобы затем группировать, поэтому я хотел бы сделать что-то, где я вычислил расстояние до каждой точки и найти минимальное расстояние по точкам, чтобы я не создавайте большой 'df', который я не могу обработать впоследствии, если это имеет смысл. Или, может быть, есть еще лучшее решение, о котором я не думал? – Davis
Работал как очарование. Спасибо за помощь! – Davis