r-如何使用具有数据帧中多个变量的函数来迭代数据帧



我有计算与一个位置的距离的功能,以及包括几个城市的纬度和经度的数据帧。如何将函数应用于数据帧并指定要使用的列?我想在数据帧中指定经度和纬度列,并向数据帧中添加另一列来存储结果。

distance <- function(longitude,latitude){
distm(c(longitude, latitude), c(-121.24, 38.80), fun = distHaversine) * 0.000621371
}
df$distance <- distance(df$long, df$lat)

我知道要尝试的所有内容都在列表中传递,而不是单个值,我不知道如何正确地迭代每一行。我已经研究过像apply和lapply这样的函数,但我不知道如何正确使用指定要使用的列。

如有任何帮助,我们将不胜感激。

要将数据帧列指定为具有多个参数的函数的矢量输入,可以使用mapply函数。

df$distance <- mapply(distance, longitude = df$long, latitude = df$lat)

Dply解决方案,它也可以很好地与sf包配合使用,从而顺利处理空间信息。

library(dplyr)
df %>%
mutate(Distance = distance (long, lat))

将添加一个";距离";列,使用df中的long和last列。你可能必须在突变呼叫之前插入rowise() %>%,我不知道距离是矢量化的还是

最新更新