【发布时间】:2016-11-11 19:06:53
【问题描述】:
在尝试计算两点(跑道入口/终点)之间的(跑道长度)距离时,我无法解决错误:“向量长度错误,应为 2”。 更糟糕的是,我无法理解像R error: Wrong length for a vector, should be 2 这样的答案并将它们应用于我的案例。 (跑道末端)位置的简化数据框如下所示:
runways <- data.frame(
RWY_ID = c(1,2,3)
,RWY = c("36R", "36L","01")
,LAT = c(40.08, 40.12, 40.06)
,LON = c(116.59, 116.57, 116.62)
,LAT2 = c(40.05, 40.07,40.09)
,LON2 = c(116.6, 116.57, 116.61)
)
使用 geosphere 中的 distHaversine() 函数,我尝试计算距离:
runways <- mutate(runways
, CTD = distHaversine( c(LON, LAT), c(LON2, LAT2))
)
我不确定我在这里做错了什么。如果我拉出 LON LAT 位置,它是一个长度正确的数值向量。
myv <- c(runways$LON[1], runways$LAT[1])
myv
[1] 116.59 40.08
str(myv)
num [1:2] 116.6 40.1
【问题讨论】:
-
你需要操作
rowwise,或者它一次通过所有行:runways %>% rowwise() %>% mutate(CTD = geosphere::distHaversine( c(LON, LAT), c(LON2, LAT2))) -
谢谢!!! Alistaire ... 生活可以如此轻松。我假设错误消息然后指向这样一个事实,即矢量化方法的排序超过了所需的长度 2。