purrr

メモ: multi-gatherをpurrrでやってみる

昨日の記事のコメント欄でmap()を使うやり方を教えてもらったので、触発されて自分でもやってみる。

do()とかrowwise()は今から覚える必要はない(たぶん)

追記(2020/07/04): この記事の予想は外れ、 rowwise() は dplyr 1.0.0 で華麗な復活を遂げました。 追記(2017/11/17): RStudio Communityで質問してみたところ、「もう機能追加されないしドキュメントでも言及されないけど、まあ数年は残るんじゃね?」とい…

purrr 0.2.3を使ってみる

なんか意外と変更点多いなと思ったのでリリースノートを眺めてみます。

メモ:stringr::str_locate_all()の結果をstringr::str_sub()に渡したいときはpurrr::map2()

例えば、適当な文字列からaで始まる単語を抜き出してみる(こんなことはstr_locate_all()を使わなくてもできるけど、まあ例ということで) library(stringr) library(purrr) x <- c("asymmetry between apple and banana", "aspiration after surgery") # \\…

ウェブAPIから返ってくるネストしまくったJSONをpurrrの力でdata.frameに変換する

某ウェブサービスのデータをAPI経由でRから取ってくるkntnrというパッケージをつくりました。 このパッケージを作るのは、実は2年間に3度くらい作りかけてはあきらめて、というのを繰り返してきました。というのも、JSONをdata.frameに変換するのが大変すぎ…

メモ:purrr::map(x, "要素名")よりはpurrr::transpose(x)$要素名

transpose()はやい。

メモ:purrr::map()は深い階層の要素でも一発で取り出せる

R4DSに書いてある話。 たとえばこういう要素があるとする。

メモ:dplyr::mutate()に引数のリストを渡したいときは.dotでがんばるよりpurrr::invoke()

これはうまくいく。 common_params <- list(zero = 0, one = 1) data.frame(x = seq(1, 10)) %>% mutate_(.dots = common_params) #> x zero one #> 1 1 0 1 #> 2 2 0 1 #> 3 3 0 1 #> 4 4 0 1 #> 5 5 0 1 #> 6 6 0 1 #> 7 7 0 1 #> 8 8 0 1 #> 9 9 0 1 #> 1…

dplyrで複数カラムを追加したいと思ったときはpurrrでslice_rows+by_slice

r-wakalangでそんな話があった時のメモ。もっといいコードがある気もしつつ、まあこれが割とシンプルなのではないでしょうか。問題は、purrrの使い方をいざという時に思い出せないというだけで。。(重大) plyr::mdply() 私はポストplyr世代なのでplyrまっ…

purrr::partial()が引数の順序のせいでうまく動かないときは.first=FALSEを指定する

purrrにも部分適用をする関数partial()があるんですけど、↓の記事のやり方を調べてた時にちょっとつまづいたのでメモ。 部分適用はS3のgeneric関数と相性が悪いことがあります。

purrr 0.2.0を使ってみる

purrr 0.2.0がCRANにきてました。けっこう色々変更があります。 dplyrとの兼ね合いでどこを変えるかまだ試行錯誤している雰囲気があって、まだまだbreaking changeが入りそうな雰囲気です。がっつり使うのはまだ控えたほうがいいかも...。

purrr 0.1.0を使ってみる(6) cross

crossは、複数ベクトルの直積集合を返す、すなわち、いい感じのexpand.grid()です。 完。 ...というくらいに特筆すべきことはないと思うんですけど、↓こんな記事もあったので、いちおう書いときます。

purrr 0.1.0を使ってみる(5) invoke

追記:invoke()はバージョン0.2になってだいぶ挙動が変わりました。(参考:purrr 0.2.0を使ってみる - Technically, technophobic.)「一組の引数に複数の関数を適用」は、invoke()ではなくてinvoke_map()です。そのうち書き直しますが今はとりあえずこのま…

purrr 0.1.0を使ってみる(4) lift

liftは、関数型言語の「持ち上げ」という概念ですが...、すみません、私これまったく理解できません…。 stackoverflow.com まあ、概念はさっぱり頭に入ってきませんが、私は、Rでは「引数の形を変える」くらいの意味だと理解しています。知ってる人は知って…

purrr 0.1.0を使ってみる(3) zip

追記(2015/11/15): zip_*()はtranspose()になるらしいです。やっぱりまだコロコロ変わりますね...。 github.com zipは、複数のベクトルを、各要素のペアのリストにします。PythonとかHaskellにあるのと同じやつです。 ただ、すべてがベクトルなRだと、他の…

purrr 0.1.0を使ってみる(2) walk

walk()、地味に難しかったです。ヘルプを見ても使用例がひとつも載ってない… RStudioブログの記事には、こう書いてあります。 walk() takes a vector, calls a function on piece, and returns its original input. It’s useful for functions called for th…

purrr 0.1.0を使ってみる(1) map

purrrがついに出ました!!! 思ったより早かったです。 blog.rstudio.org

メモ:purrrでlistのNAを置き換える

プルルルルの愛称で親しまれるpurrrがついにCRANにリリースされました。(ほんとは「ピュアラー」という発音だった気がします) blog.rstudio.org けっこうでかいパッケージなので紹介は後日書く(たぶん)として、ちょこちょこメモを書いていきます。