R中的group_by和map2_dfr错误,返回不一致的向量

R中的group_by和map2_dfr错误,返回不一致的向量,r,tidyverse,R,Tidyverse,我有一个名为biny的数据框,它是对大约9k行、18列地理编码值的观察。我正在尝试循环查找下一个最近的值,并将项目按辖区分组。问题是这里的映射似乎将行和列发送到map2_dfr,而不是相应的纬度和经度 dplyr::group_by(PRECINCT) %>% purrr::map2_dfr(.$long, .$lat, ~spatialrisk::points_in_circle(, .x, .y,

我有一个名为biny的数据框,它是对大约9k行、18列地理编码值的观察。我正在尝试循环查找下一个最近的值,并将项目按辖区分组。问题是这里的映射似乎将行和列发送到map2_dfr,而不是相应的纬度和经度

   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
到目前为止,我已经尝试将其作为一个数据表、一个函数以及中间的十几种方式来运行,但无法在其中任何一种上运行。没有和小组成员结婚,只想在每个选区的圈中运行该点

令人沮丧的因素,这很好:

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

ans1我们可以使用
group\u split
按“辖区”进行分割,使用
map
列表上循环,然后应用
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,])
         })
out%
分组(选区)%>%
地图(~{

dat我可以发布到数据集和原始代码的链接,但我觉得我可能只是在这里映射了一些错误,聪明的R用户会很快发现问题在于您没有指定
~
@akrun您完全正确,我确实错过了~,修复了仍然存在的错误,但有一些疑问是您在“long”、“lat”列上循环,而不是d然后指定
long=long
即整个列?您能检查下面发布的解决方案吗?这似乎非常有效,是否有理由它会踢出一个列表而不是一个数据帧?例如,您可以使用
mutate
summary
分组后对
进行总结,但我不确定输出的行为f
spatialrisk::points_in_circle
。如果它是摘要(在以前的版本中,它返回一行/组。如果发生变化,它应该返回相同数量的行(但在1.0.0中,它已更改,但仍可能存在一些错误问题)而
列表
中的输出更可预测。如果您得到一个
data.frame
作为输出,并且点在圆中。使用
映射
代替
映射