阅读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方式是什么?
您可以执行以下操作:
library(tidyverse)
library(purrr)
d %>% by_row(~data_frame(x = seq_len(.$n))) %>% unnest()
Run Code Online (Sandbox Code Playgroud)
by_row将函数应用于每一行,将结果存储在嵌套的元组中.
unnest然后用于删除嵌套并连接元组.