我有2个data.frames:
我想计算在特定半径(米)内至少有1个巴士站的用户百分比。
所以我创建了一个带有嵌套循环的函数来遍历每个用户,只要在所需的半径内有1个停止,就会中断。
解决方案有效,问题在于性能。有没有办法加快速度?
percentage_of_users_near_to_busstop <- function(users, stops, radius) {
users$stops_in_radius <- 0
users_length <- nrow(users)
stops_length <- nrow(stops)
for (i in 1:users_length) {
for (j in 1:stops_length) {
if ( distm (c(users$longitude[i], users$latitude[i]),
c(stops$longitude[j], stops$latitude[j]),
fun = distHaversine) < radius)
{ users[i, "stops_in_radius"] <- users[i, "stops_in_radius"] + 1
break }
}
#print(paste0(i/users_length*100, "%"))
}
return(nrow(subset(users, stops_in_radius > 0))/nrow(users))
}