Функция zipRadius для нескольких почтовых индексов - PullRequest
0 голосов
/ 14 апреля 2020

Кто-нибудь может мне помочь поставить функцию zipRadius в al oop?

Эта функция используется для идентификации всех почтовых индексов в радиусе определенного c почтового индекса (ов). Функция работает хорошо, когда через нее вводится один почтовый индекс. Для нескольких почтовых индексов это просто не работает. Пожалуйста, посмотрите ниже, что я пробовал:

Попытка # 1

install.packages("ZipRadius")

library(ZipRadius)

zipRadius(c("99501", "90210"), 3)

Попытка # 2

install.packages("ZipRadius")

library(ZipRadius)

x <- c("30316", "66061")

for (i in seq_along(x)) {
  c <-zipRadius(x[i], 3.5)
}

1 Ответ

0 голосов
/ 14 апреля 2020

Я не верю, что zipRadius векторизовано, и более одного почтового индекса, указанного в векторе, может быть проигнорировано (для попытки # 1).

Ваш l oop работает, но вы перезаписываете ваш c со вторым вызовом zipRadius.

Если вам нужен один фрейм данных со всеми результатами, вы можете добавить второй фрейм данных к первому и использовать rbind для их объединения.

library(ZipRadius)

x <- c("30316", "66061")

mylist = list()

for (i in seq_along(x)) {
  mylist[[i]] <- zipRadius(x[i], 3.5)
}

do.call(rbind, mylist)

Вывод

     zip            city state latitude longitude Distance
1  30303         Atlanta    GA 33.75286 -84.39013     3.26
2  30307         Atlanta    GA 33.76821 -84.33786     2.68
3  30312         Atlanta    GA 33.74574 -84.37640     2.33
4  30315         Atlanta    GA 33.70960 -84.38365     2.82
5  30316         Atlanta    GA 33.72951 -84.34087     0.00
6  30317         Atlanta    GA 33.75001 -84.31854     1.91
7  30335         Atlanta    GA 33.75241 -84.38968     3.22
8  31120         Atlanta    GA 33.74000 -84.38000     2.36
9  66051          Olathe    KS 38.89990 -94.83199     1.45
10 66061          Olathe    KS 38.88978 -94.85558     0.00
11 66063          Olathe    KS 38.89990 -94.83199     1.45
12 66222 Shawnee Mission    KS 38.89990 -94.83199     1.45
13 66225 Shawnee Mission    KS 38.89990 -94.83199     1.45
14 66250 Shawnee Mission    KS 38.89990 -94.83199     1.45
15 66251 Shawnee Mission    KS 38.89990 -94.83199     1.45
16 66276 Shawnee Mission    KS 38.89990 -94.83199     1.45
17 66279 Shawnee Mission    KS 38.89990 -94.83199     1.45
18 66282 Shawnee Mission    KS 38.89990 -94.83199     1.45
19 66283 Shawnee Mission    KS 38.89990 -94.83199     1.45
20 66285 Shawnee Mission    KS 38.89990 -94.83199     1.45
21 66286 Shawnee Mission    KS 38.89990 -94.83199     1.45

Или вы можете пропустить l oop и использовать lapply, и вы получите результаты в списке:

lapply(x, zipRadius, 3.5)

Выход

[[1]]
    zip    city state latitude longitude Distance
1 30303 Atlanta    GA 33.75286 -84.39013     3.26
2 30307 Atlanta    GA 33.76821 -84.33786     2.68
3 30312 Atlanta    GA 33.74574 -84.37640     2.33
4 30315 Atlanta    GA 33.70960 -84.38365     2.82
5 30316 Atlanta    GA 33.72951 -84.34087     0.00
6 30317 Atlanta    GA 33.75001 -84.31854     1.91
7 30335 Atlanta    GA 33.75241 -84.38968     3.22
8 31120 Atlanta    GA 33.74000 -84.38000     2.36

[[2]]
     zip            city state latitude longitude Distance
1  66051          Olathe    KS 38.89990 -94.83199     1.45
2  66061          Olathe    KS 38.88978 -94.85558     0.00
3  66063          Olathe    KS 38.89990 -94.83199     1.45
4  66222 Shawnee Mission    KS 38.89990 -94.83199     1.45
5  66225 Shawnee Mission    KS 38.89990 -94.83199     1.45
6  66250 Shawnee Mission    KS 38.89990 -94.83199     1.45
7  66251 Shawnee Mission    KS 38.89990 -94.83199     1.45
8  66276 Shawnee Mission    KS 38.89990 -94.83199     1.45
9  66279 Shawnee Mission    KS 38.89990 -94.83199     1.45
10 66282 Shawnee Mission    KS 38.89990 -94.83199     1.45
11 66283 Shawnee Mission    KS 38.89990 -94.83199     1.45
12 66285 Shawnee Mission    KS 38.89990 -94.83199     1.45
13 66286 Shawnee Mission    KS 38.89990 -94.83199     1.45
...