diamonds %>%
mutate(log_price = log(price)) %>%
group_by(cut) %>%
nest() %>%
mutate(scale_log = map_dbl(data, ~.x$log_price %>% scale %>% as.vector))
Желаемый результат - новая переменная scale_log, которая представляет собой просто вектор для каждой строки кадра данных. Приведенный выше код дает:
Ошибка: результат 1 должен быть одинарным двойным, а не двойным вектором длины 1610
Это работает, если я просто использую обычную карту:
x <- diamonds %>%
mutate(log_price = log(price)) %>%
group_by(cut) %>%
nest() %>%
mutate(scale_log = map(data, ~.x$log_price %>% scale %>% as.vector))
Но когда я это делаю, x $ scale_log представляет собой список, тогда как я хотел, чтобы он был просто вектором:
x %>% glimpse
Rows: 5
Columns: 3
Groups: cut [5]
$ cut <ord> Ideal, Premium, Good, Very Good, Fair
$ data <list> [<tbl_df[21551 x 11]>, <tbl_df[13791 x 11]>, <tbl_df[4906 x 11]>, <tbl_df[12082 x 11]>, <tbl_df[1610 x 11]>]
$ scale_log <list> [<-1.8668994653, -1.8245259872, -1.8127394789, -1.8010892338, -1.6532201679, -1.6532201679, -1.6532201679, -1.6507226822, -1.6507226822, -1…
Как я могу использовать map_dbl для получения желаемого результата?