阅读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
这样做的方式是什么?
答案 0 :(得分:6)
您可以执行以下操作:
library(tidyverse)
library(purrr)
d %>% by_row(~data_frame(x = seq_len(.$n))) %>% unnest()
by_row
将函数应用于每一行,将结果存储在嵌套的元组中。
然后使用unnest
来删除嵌套并连接这些元素。
答案 1 :(得分:1)
使用pmap()
消除了嵌套和取消嵌套的需要。
library(tidyverse)
d %>% pmap_df(~data_frame(x = seq_len(.)))