Используйте mutate в рабочем процессе purrr - PullRequest
1 голос
/ 16 февраля 2020

Я получил следующие наборы данных:

dflist <- list(mtcars, mtcars)

dflist[[1]] %>%
  mutate(cyl2 = cyl * 2)

Это работает!

dflist %>%
  map(.x, ~.x$cyl2 = .x$cyl * 2)

Error: unexpected '=' in:
"dflist %>%
  map(.x, ~x$cyl2 ="

Это приводит к ошибке. Я пробовал другие варианты, но функция не кроме знака =. Что там не так?

Ответы [ 3 ]

2 голосов
/ 16 февраля 2020

Вы также можете попробовать:

modify(dflist, ~ update_list(., cyl2 = ~ cyl * 2))

[[1]]
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb cyl2
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4   12
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4   12
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1    8
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1   12
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2   16

[[2]]
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb cyl2
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4   12
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4   12
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1    8
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1   12
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2   16
2 голосов
/ 16 февраля 2020

Попробуйте:

library(dplyr)
library(purrr)

dflist %>% map(~.x %>% mutate(cyl2 = cyl * 2))

#[[1]]
#    mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4   12
#2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4   12
#3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    8
#4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1   12
#5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2   16
#....

#[[2]]
#    mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4   12
#2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4   12
#3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    8
#4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1   12
#5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2   16
#...

Или сохраните его в базе R:

lapply(dflist, function(x) transform(x, cyl2 = cyl * 2))
0 голосов
/ 16 февраля 2020

Мы можем использовать transform без анонимного вызова функции в base R

lapply(dflist, transform, cyl2 = cyl *2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...