Saya memiliki bingkai data yang disebut biny yang merupakan pengamatan sekitar 9k baris nilai geocoded, 18 kolom. Saya mencoba untuk mengulang dan menemukan nilai terdekat berikutnya, dengan item yang dikelompokkan berdasarkan Precinct. masalahnya adalah pemetaan di sini tampaknya mengirim baris dan kolom ke map2_dfr, alih-alih masing-masing lintang dan bujur.

   dplyr::group_by(PRECINCT) %>%
  purrr::map2_dfr(.$long, .$lat,  
                  ~spatialrisk::points_in_circle(, .x, .y, 
                                                 lon = long, 
                                                 radius = 1000)[2,])

Error: Mapped vectors must have consistent lengths:
* `.x` has length 18
* `.y` has length 8409

Sejauh ini saya sudah mencoba menjalankan ini sebagai tabel data, sebagai fungsi, dan sekitar selusin cara di antaranya, dan tidak dapat menjalankan ini di salah satu dari mereka. tidak menikah dengan group_by, hanya ingin menjalankan points_in_circle itu untuk masing-masing daerah.

Elemen frustrasi, ini berfungsi dengan baik:

ans1 <- purrr::map2_dfr(bind$long, bind$lat,  
                ~spatialrisk::points_in_circle(bind, .x, .y, 
                                               lon = long, 
                                               radius = 1000)[2,])

Saya hanya mencoba menjalankannya di setiap kantor polisi, tetapi sepertinya tidak menyukai opsi itu.

2
ike 1 Juli 2020, 01:07

1 menjawab

Jawaban Terbaik

Kita dapat menggunakan group_split untuk membagi dengan 'PRECINCT', mengulang list dengan map dan kemudian menerapkan map2

out <- bind %>%
       group_split(PRECINCT) %>%
       map(~ {
           dat <- .x
            purrr::map2_dfr(dat$long, dat$lat,             
                ~spatialrisk::points_in_circle(dat, .x, .y, 
                                           lon = long, 
                                           radius = 1000)[2,])
         })
1
akrun 30 Juni 2020, 22:26