R 错误:向量的长度错误,使用 Geosphere 包时应为 2
Posted
技术标签:
【中文标题】R 错误:向量的长度错误,使用 Geosphere 包时应为 2【英文标题】:R error: Wrong length for a vector, should be 2 while using Geosphere package 【发布时间】:2021-05-25 14:28:44 【问题描述】:我正在尝试分析两个位置之间的平均距离,以便为自动批准行驶距离提供可接受的截止值。 我绑定了 (geosphere distHaversine() & dplyr - error wrong length for vector, should be 2) 和 (Getting Error in .pointsToMatrix(p1) : Wrong length for a vector, should be 2) 但我无法调试错误并完成我的分析。
数据框是这样的,有 10 行数据。
df <- c(lat1,long1,lat2,long2)
df matrix with 10 rows of data
当我尝试使用以下内容时
df %>% rowwise() %>% mutate(HVRSINE = distHaversine(c(df$long1,df$lat1),c(df$long2,df$lat2)))
错误出现:
Error: Problem with `mutate()` column `HVRSINE`.
x Wrong length for a vector, should be 2
The error occurred in row 1.
当我在 disthaversine 中手动编写 lat,long for 时,输出就像一个魅力。
我做错了什么?
【问题讨论】:
不要在dplyr
命令中使用$
。 df$long1
覆盖 dplyr
的非标准评估以专门从整个 df
中提取整个 long1
列,忽略 rowwise
和任何 group_by
以及任何其他花哨的 dplyr
东西。更改为mutate(HVRSINE = distHaversine(c(long1, lat1), c(long2, lat2)))
,我认为它应该可以工作。
如果您想根据您的示例数据获得答案,请使用(类似)dput(head(df))
的输出编辑您的帖子。
谢谢格雷戈尔·托马斯。像魅力一样工作。
【参考方案1】:
试试
library(tidyverse)
df %>%
mutate(HVRSINE = unlist(pmap(list(a = long1,
b = lat1,
x = long2,
y = lat2),
~ distHaversine(c(..1, ..2), c(..3, ..4)))))
【讨论】:
以上是关于R 错误:向量的长度错误,使用 Geosphere 包时应为 2的主要内容,如果未能解决你的问题,请参考以下文章