【问题标题】:Use mutate in purrr workflow在 purrr 工作流程中使用 mutate
【发布时间】:2020-02-17 01:23:33
【问题描述】:

我得到了以下数据集:

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 ="

这会导致错误。我尝试了其他选项,但该功能除了= 符号之外没有。有什么问题?

【问题讨论】:

    标签: r dplyr purrr


    【解决方案1】:

    试试:

    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))
    

    【讨论】:

      【解决方案2】:

      你也可以试试:

      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
      

      【讨论】:

        【解决方案3】:

        我们可以在base R中使用transform而不需要匿名函数调用

        lapply(dflist, transform, cyl2 = cyl *2)
        

        【讨论】:

        • 我要求提供 purrr 工作流程,但我没有反对
        猜你喜欢
        • 1970-01-01
        • 2018-03-09
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多