purrr :: map相当于dplyr :: do

tho*_*hal 4 r dplyr purrr

阅读https://twitter.com/hadleywickham/status/719542847045636096我明白这种purrr方法基本上应该取代do.

因此,我想知道如何使用purrr它:

library(dplyr)
d <- data_frame(n = 1:3)
d %>% rowwise() %>% do(data_frame(x = seq_len(.$n))) %>% ungroup()
# # tibble [6 x 1]
#       x
# * <int>
# 1     1
# 2     1
# 3     2
# 4     1
# 5     2
# 6     3
Run Code Online (Sandbox Code Playgroud)

我能得到的最接近的是:

library(purrrr)
d %>% mutate(x = map(n, seq_len))
# # A tibble: 3 x 2
#       n         x
#   <int>    <list>
# 1     1 <int [1]>
# 2     2 <int [2]>
# 3     3 <int [3]>
Run Code Online (Sandbox Code Playgroud)

map_int不行.那么这样做的purrrr方式是什么?

AEF*_*AEF 6

您可以执行以下操作:

library(tidyverse)
library(purrr)
d %>% by_row(~data_frame(x = seq_len(.$n))) %>% unnest()
Run Code Online (Sandbox Code Playgroud)

by_row将函数应用于每一行,将结果存储在嵌套的元组中. unnest然后用于删除嵌套并连接元组.

  • 旁注:`by_row` [似乎已被移动](https://github.com/tidyverse/purrr/blob/master/NEWS.md)到包[`purrrlyr`](https://cran.r -project.org/web/packages/purrrlyr/index.html). (3认同)