The culprit is rowwise
. The return is there, but as an attribute.
suppressPackageStartupMessages({
library(dplyr)
library(geosphere)
library(magrittr)
})
all_trips <- data.frame(
start_lng =
c(-87.666058, -87.666058, -87.63110067, -87.672069, -87.6258275, -87.62025317),
start_lat =
c(42.012701, 42.012701, 41.88579467, 41.895634, 41.8347335, 41.89580767),
end_lng =
c(-87.661406, -87.669563, -87.62749767, -87.673935, -87.6451235, -87.63197917),
end_lat =
c(42.004583, 42.019537, 41.884866, 41.903119, 41.83816333, 41.89488583)
)
all_trips %<>%
rowwise() %>%
mutate(ride_dist = distm(c(start_lng, start_lat), c(end_lng, end_lat)))
str(all_trips)
#> rowwise_df [6 × 5] (S3: rowwise_df/tbl_df/tbl/data.frame)
#> $ start_lng: num [1:6] -87.7 -87.7 -87.6 -87.7 -87.6 ...
#> $ start_lat: num [1:6] 42 42 41.9 41.9 41.8 ...
#> $ end_lng : num [1:6] -87.7 -87.7 -87.6 -87.7 -87.6 ...
#> $ end_lat : num [1:6] 42 42 41.9 41.9 41.8 ...
#> $ ride_dist: num [1:6, 1] 981 813 316 846 1647 ...
#> - attr(*, "groups")= tibble [6 × 1] (S3: tbl_df/tbl/data.frame)
#> ..$ .rows: list<int> [1:6]
#> .. ..$ : int 1
#> .. ..$ : int 2
#> .. ..$ : int 3
#> .. ..$ : int 4
#> .. ..$ : int 5
#> .. ..$ : int 6
#> .. ..@ ptype: int(0)
all_trips[5]
#> # A tibble: 6 x 1
#> # Rowwise:
#> ride_dist[,1]
#> <dbl>
#> 1 981.
#> 2 813.
#> 3 316.
#> 4 846.
#> 5 1647.
#> 6 978.
The path of least resistance
suppressPackageStartupMessages({
library(dplyr)
library(geosphere)
library(magrittr)
})
all_trips <- data.frame(
start_lng =
c(-87.666058, -87.666058, -87.63110067, -87.672069, -87.6258275, -87.62025317),
start_lat =
c(42.012701, 42.012701, 41.88579467, 41.895634, 41.8347335, 41.89580767),
end_lng =
c(-87.661406, -87.669563, -87.62749767, -87.673935, -87.6451235, -87.63197917),
end_lat =
c(42.004583, 42.019537, 41.884866, 41.903119, 41.83816333, 41.89488583)
)
sav_trips <- all_trips
all_trips %>%
rowwise() %>%
mutate(ride_dist = distm(c(start_lng, start_lat), c(end_lng, end_lat)))
#> # A tibble: 6 x 5
#> # Rowwise:
#> start_lng start_lat end_lng end_lat ride_dist[,1]
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 -87.7 42.0 -87.7 42.0 981.
#> 2 -87.7 42.0 -87.7 42.0 813.
#> 3 -87.6 41.9 -87.6 41.9 316.
#> 4 -87.7 41.9 -87.7 41.9 846.
#> 5 -87.6 41.8 -87.6 41.8 1647.
#> 6 -87.6 41.9 -87.6 41.9 978.
all_trips %<>% rowwise() %>%
mutate(ride_dist = distm(c(start_lng, start_lat), c(end_lng, end_lat)))
ride_dist <- all_trips[5]
all_trips <- tibble::add_column(sav_trips,ride_dist)
all_trips
#> start_lng start_lat end_lng end_lat ride_dist
#> 1 -87.66606 42.01270 -87.66141 42.00458 980.5928
#> 2 -87.66606 42.01270 -87.66956 42.01954 812.9084
#> 3 -87.63110 41.88579 -87.62750 41.88487 316.3360
#> 4 -87.67207 41.89563 -87.67394 41.90312 845.6658
#> 5 -87.62583 41.83473 -87.64512 41.83816 1647.4263
#> 6 -87.62025 41.89581 -87.63198 41.89489 978.4702