potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

tidyverse

R&ggplot2 qqplotrのプロットをpurrrで結合してpatchworkで表示する

qqplotrのプロットをpurrrで結合してpatchworkで表示するコードです。要は次の図を関数主体で作成するコードです。 コード コードの説明 qqplotrパッケージとqqplotr::stat_qq_*関数 ggplot(data, aes(...=!!sym(変数))) | コード library(purrr) library(gg…

R&tidyverse&openxlsx xlsxファイルのテーブルを読み込む

xlsxファイルでテーブルの名前からデータを読み込むコードです。テーブルの名前からシート名とA1形式範囲の取得はopenxlsx、シート名とA1形式範囲の読み込みにはreadxlを使用しています。 カレントディレクトリに「テーブル1」テーブルを持つxlsxファイルを…

R 標準ライブラリ・tidyverse系のチップス

Rの自分用チップスです。ちょっとずつ増やしていきたいです。 ベクトルの末尾/先頭N個以外を取り出す ベクトルのインデックスベクトルを安全に返す。 文字列ベクトルを変形する パッケージの関数名一覧を返す。 Rのベースパッケージを検索する summary(lm(.…

R&tidyverse tibbleに条件分岐で列を追加する

Rとtidyverse 1.3.1でtibbleに条件分岐で列を追加するサンプルコードです。case_whenは%>% case_when(条件式~値, ...)の形式で条件を満たす値を返します。最後のTRUE~NA_real_はどの条件にも一致しない要素の値を指定しています。NA_real_がNAではないのはca…

公開データ 札幌市の住民基本台帳閲覧状況 委託者

きっかけ オリンピック意向調査の結果を見ようと札幌市のウェブサイトを検索していたら住民基本台帳の閲覧状況が見つかりました。行政機関に混じって野村総研が混じっていることが気になったので概要を確認してみました。 結論 委託者の多くは行政関係(NHK…

R&tidyverse mutate_atによる列単位変換の列選択方法

tidyverseではmutate_at関数で列を指定して列単位で変換できます。ここでは列選択の方法をいくつか紹介します。 library(tidyverse) data <- as_tibble(iris) # 3列目以降の列を文字列に変換したtibbleを作成する。 # 整数範囲または`vars(n:last_col())`を…

R&tidyverse filterとkeep/discardの使い分け

filterはデータフレームの行選択、keep/discardはベクトルの要素選択です。 require(dplyr) require(purrr) 1:5 %>% keep(~. %% 2 == 0) # [2, 4] 1:5 %>% discard(~. %% 2 == 0) # [1, 3, 5] tibble(A=1:5, B=11:15) %>% filter(A %% 2 == 0) ## A tibble: …

R purrrパッケージ(tidyverse)のmapメモ

変数の数 使う変数 リスト integerベクトル doubleベクトル characterベクトル logicalベクトル raw データフレーム 無視(元の値) 1個 . .x ..1 map map_int map_dbl map_chr map_lgl map_raw map_dfc, map_dfr walk 2個 . .x .y ..1 ..2 map2 map2_dbl ma…

R&tidyverse purrrパッケージに存在する関数の名前を取得する

purrrパッケージに存在する関数の名前を取得するコードです。ついでに非関数の名前も取得します。 # purrrパッケージに存在する関数の名前を取得する。 require(purrr) x <- lsf.str("package:purrr") print("purrrパッケージの関数:") print(as.character(…

R&tidyverse purrr::map系関数とformulaの引数指定

purrr::map系関数はformula(~...)で式を与えられます。引数は.、.x、..1のどれでも指定できます。 require(purrr) 1:10 %>% map_dbl(~.+1) 1:10 %>% map_dbl(~.x+1) 1:10 %>% map_dbl(~..1+1) #> [1] 2 3 4 5 6 7 8 9 10 11 purrr::map2系関数やpurrr::pma…

R&tidyverse purrr::map_intが単純な足し算で失敗する理由

purrr::map_int関数が単純な足し算で失敗したとき、数値リテラルの型が原因かもしれません。 次のコードで(1)はエラー、(2)は成功します。違いは足す数が1か1Lかです。 require(purrr) 1:10 %>% map_int(~.x+1) #> Error: Can't coerce element 1 from a dou…

R&tidyverse magrittrによるextract関数の上書きに注意

tidyverseパッケージの後でmagrittrパッケージを読み込むとextract関数が上書きされます。magrittr::extract関数の仕様により、magrittrなしのつもりで呼び出してもエラーを発生しないのでかなり気づきにくいバグが生まれます。conflictedパッケージを使うか…