2017-10-06 17 views
0

この関数split_byを使用する前に、パッケージpurrrから覚えています。今私がそれにアクセスしようとすると、それは関数Split_byを見つけることができないと言います。私はパッケージpurrrにlsを実行しようとしましたが、私はそこに関数を見つけることができませんでした。パッケージの目的を果たす代替手段はありますか?PurrrパッケージのRでSplit_by関数が見つかりません

答えて

0

こちらを参照してください。 purrr 0.2.3

https://cran.r-project.org/web/packages/purrr/news.html

order_by()、sort_by()、split_by()は削除されました。 order_by() はdplyr :: order_by()と競合し、完全なファミリは有用であると感じていません。 代わりにタブルを使用してください(#217)。ここで

purrr 0.2.2から元のコードです:

split_by <- function(.x, .f, ...) { 
    vals <- map(.x, .f, ...) 
    split(.x, simplify_all(transpose(vals))) 
} 

そして、元の例:代わりに

をtibblesを使用して

l2 <- rerun(5, g = sample(2, 1), y = rdunif(5, 10)) 
l2 %>% split_by("g") %>% str() 

私は方向が「tibblesを使用して理解して代わりに "このように:

あなたのリストは、このようにリストが適切な構造ではない、あなたは前の例以下、"one row by observation, one column by variable"のきちんとしたルールを尊重するtibbleに変換することができ、同様の構造を共有するいくつかの項目があります。

t2 <- as_tibble(transpose(l2)) %>% mutate(g=unlist(g)) 

その後のことができます。

split(t2,t2$g) 

# $`1` 
# # A tibble: 3 x 2 
#   g   y 
#  <int> <list> 
# 1  1 <dbl [5]> 
# 2  1 <dbl [5]> 
# 3  1 <dbl [5]> 
# 
# $`2` 
# # A tibble: 2 x 2 
#   g   y 
#  <int> <list> 
# 1  2 <dbl [5]> 
# 2  2 <dbl [5]> 

またはdplyr::group_byを使用し(きちんと原則に関するクリーナーそれを維持):それを分割

t2 %>% group_by(g) %>% your_code 
+1

驚くばかり!どうもありがとう! – Andy

+0

私は、それを置き換えるためのhadleyの推奨に従って、私の更新を更新しました。 –

0

split_byは、バージョン0.2.3で廃止されました - pluckドキュメントから - the release notes

機能はpluckになりましたが、あなたは複数の引数を渡すことができます参照してください。

library(purrr) 
# pluck() supports integer positions, string names, and functions. 
# Using functions, you can easily extend pluck(). Let's create a 
# list of data structures: 
obj1 <- list("a", list(1, elt = "foobar")) 
obj2 <- list("b", list(2, elt = "foobaz")) 
x <- list(obj1, obj2) 

# And now an accessor for these complex data structures: 
my_element <- function(x) x[[2]]$elt 

# The accessor can then be passed to pluck: 
pluck(x, 1, my_element) 
#> [1] "foobar" 
pluck(x, 2, my_element) 
#> [1] "foobaz" 
関連する問題