2017-06-08 9 views
2

を参照してください。https://twitter.com/hadleywickham/status/719542847045636096purrrのアプローチは、基本的にdoを置き換えるべきであると私は理解しています。purrr :: map dplyr :: 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

チェーンの最後に 'tidyr :: unnest'が必要だと思います。私はそれが "かっこいい"方法かどうかわかりませんが、それは方法です。 – aosmith

答えて

3

次の操作を行うことができます:

library(tidyverse) 
library(purrr) 
d %>% by_row(~data_frame(x = seq_len(.$n))) %>% unnest() 

by_rowは、ネストされたtibblesに結果を格納し、各列に関数を適用します。 unnestは、入れ子を取り除き、ひだを連結するために使用されます。

+2

サイドノート: 'by_row' [httr://github.com/tidyverse/purrr/blob/master/NEWS.md]をパッケージ[' purrrlyr'](https:// cran。 r-project.org/web/packages/purrrlyr/index.html)。 – lukeA

関連する問題