purrr::map 相当于 dplyr::do
purrr::map equivalent to dplyr::do
正在阅读 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
我能得到的最接近的是这样的:
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]>
map_int
是行不通的。那么 purrrr
的方法是什么?
您可以执行以下操作:
library(tidyverse)
library(purrr)
d %>% by_row(~data_frame(x = seq_len(.$n))) %>% unnest()
by_row
对每一行应用一个函数,将结果存储在嵌套的小标题中。
unnest
然后用于删除嵌套并连接 tibbles。
使用 pmap()
消除了嵌套和取消嵌套的需要。
library(tidyverse)
d %>% pmap_df(~data_frame(x = seq_len(.)))
正在阅读 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
我能得到的最接近的是这样的:
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]>
map_int
是行不通的。那么 purrrr
的方法是什么?
您可以执行以下操作:
library(tidyverse)
library(purrr)
d %>% by_row(~data_frame(x = seq_len(.$n))) %>% unnest()
by_row
对每一行应用一个函数,将结果存储在嵌套的小标题中。
unnest
然后用于删除嵌套并连接 tibbles。
使用 pmap()
消除了嵌套和取消嵌套的需要。
library(tidyverse)
d %>% pmap_df(~data_frame(x = seq_len(.)))