NSE処理で変数列名を柔軟に変更

R NSE

データフレーム と 使用する変数 と 新しく合成する変数列名 を引数にもつ関数を作ったとする。 f <- function(data, var, new_var) { # NSE処理 var <- rlang::enquo(var) new_var <- rlang::enquo(new_var) # varを2倍した新しい変数 `new_var` を作る .d …

ggplotでNSE処理

ggplotで変数を柔軟に変更できるような自作関数を作りたくなったら、やはりNSE処理が必要になる。例えば、あるデータフレームを使用して、そのデータフレーム中の2つの変数を指定し、散布図を描きたいとしよう。 ggplot(data = iris) + geom_point(aes(x = S…

patchworkについて

group_nest して map で ggplot を作ったあと、そのfigsをまとめて1つのfigにしたいときがある。 そういうときに patchwork::wrap_plots が便利。 例えばこんなコード。 pacman::p_load(tidyverse) d_plot <- iris %>% group_nest(Species) %>% mutate( figu…

NSE処理について

R NSE

引数に データフレーム と データフレーム中の変数 を指定可能な自作関数を作りたいときがある。 例えば、 iris %>% select(Sepal.Length) という超簡単な処理を Sepal.Length 以外の変数でも使えるように、この処理を関数化してみよう。直感的にはこんな風…

blogdownについて

Rmarkdownでブログ書きたい Rstudioで色々慣れてしまったので、技術ブログの管理もRstudioでやりたい。もっというと、 Rmarkdown で書きたい。blogdown はそういうコンセプトのライブラリらしい。 こんな感じでやればええんとちゃうか。 git hubでリモートリ…

バージョン管理について(pins・renv)

バージョン管理って大切なんですね。チームで動くときは特に。 バージョン管理したいのは、パっと思いつくものだと、 - Rそのもの - ライブラリ - スクリプト - 元データ これらのバージョンを管理しておけば、 - 過去のある時点の結果を再現 - 引継ぎの後任…

Performanceについて

Assessment of Regression Models Performance • performance glmやglmerのR2、多重共線性、正規性、過分散、ゼロ過剰を確認する (easystats) - Qiita

Apache Arrowについて

【R】Apache Arrowとduckdbを試してみる - Qiita Apache Spark 3.0でサポートされるRのI/Oのベクトル化 - Qiita Apache Arrowの現状確認(2018年7月) - Technically, technophobic.

行方向で集計したいとき

R

行方向で集計したいとき、例えば総和を求めたいとき、いつもrowwiseとかc_acrossとかの書き方を忘れる。イライラ! `mutate(rowMeans())` や `mutate(rowSums())` で十分 dplyr.tidyverse.org

特定の文字の前後で分割したいとき

str_split_fixed(data$分割したい列, '分割の目印となる文字列', n = 分割後の列数)

欠損値の削除方法について

NAをすべて置き換えたいとき data[is.na(data)] <- 置き換えたいもの

回帰診断について

線形回帰モデルを組んだ時はちゃんと回帰診断して、誤差に関する複数の仮定が妥当かをチェックせなあかんで、という話。 www.goodnalife.com http://www.aoni.waseda.jp/abek/document/regression-3.html www.qualtrics.com

gitについて

git

gitむずすぎワロタなんだが。リモートの全ブランチをローカルに落としたいときは、 git fetch -- all git pull --all でええらしい。しかし、git branchでみてみても、リモートのブランチがローカルで確認できない。git branch -rだと確認できる。よくわから…

接触するポリゴンを1つのポリゴンとしてまとめるとき

R GIS

gisをしていると、接触するポリゴンを1つのポリゴンとしてまとめたいときがある。sfパッケージでできるのだが、どうも思ったようにはいまのところ動かないときがある。 例えば、geom_sfで可視化したときに、接触していないようなポリゴンが接触したと判定さ…

japanmeshでメッシュポリゴンをsf形式に変換

R GIS

japanmeshはjpmeshより何かと処理速度が速くて助かる。mesh_codeさえわかれば、それをポリゴンにしてsf形式のtibbleにすることもできる。こんな感じ。 japanmeshがなくなってjpgridになったver (data with meshcode) %>% mutate( geometry = map( .x = mesh_…

tidymodelsのprep, juice, bakeの必要性

R

tidymodelsでなんでわざわざprepとかjuiceとかbakeせなあかんのよくわからんかった。同じ疑問を持つ人もいるようだ。 https://community.rstudio.com/t/are-prep-bake-and-juice-needed-to-train-evaluate-a-model/84916 workflowつかうなら別にいらんくね?…

GoodNotesで書籍を読み込むとき

書籍のpdfをGoodNotesに読み込む方法をいつも忘れるのでメモ。 iTunes起動→iPad接続→ライブラリ→ミュージックの横のiPadボタン→ファイル共有→GoodNotes→読み込みたいpdfをドラッグアンドドロップ 以上

glmnetで説明変数の上限を超えたとき

glmnetでは説明変数の個数に上限があるらしい。300個以上の説明変数をつかったモデルを組んだら、こんなエラーがでた。 Error: protect(): protection stack overflow同じことについて質問している人がいた。 https://stackoverflow.com/questions/32826906/…

future_mapでメモリが足りませんと言われたら

future_mapをつかったら、こんなエラー文がでた。 Error in getGlobalsAndPackages(expr, envir = envir, persistent = persistent, : The total size of all global objects that need to be exported for the future expression (‘head(a)’) is XXX MiB. T…

ENMevalでhingeを設定するとバグるときがある

なぜかhingeをfeatureに指定すると時々バグる https://groups.google.com/g/Maxent/c/PE_MCCqxEV4 https://github.com/jamiemkass/ENMeval/issues/57

変数名の一括変換

・特定の文字列をもつ変数のみに、特定の変数名の変換処理を適用したいとき rename_at(.vars = vars(contains(特定の文字列), .funs = (変換処理))

for文の並列処理への書換について

1.まずはfor文でいったん処理を書き下す for (i in 引数) { (処理) } 2.for文のiterationを引数に持つ関数に書き換える 関数 <- function(i = 引数) { (処理) } 3.future_mapに2の関数を埋め込む future::plan(future::multisession) furrr::future…

maxentについて

在データしか手に入らない状況で、なんとか種分布モデルを構成したいときに、最近よく使われるようになっているmaxent。 総個体数が一定のある生物が限られた環境中(メッシュと読み替えても良い)に分布しており、各環境での個体数はその地点の環境要因と連…

errorに対して例外処理したいとき

qiita.com

geom_sfについて

R GIS

描画する緯度経度で範囲指定したい coord_sf( xlim = lonlim, ylim = latlim ) 緯度経度の刻みを調整したい scale_x_continuous(breaks = seq( trunc(lonlim[1] / 10) * 10, floor(lonlim[2] / 10) * 10, 5)) + scale_y_continuous(breaks = seq( trunc(latl…

ディレクトリの操作

ディレクトリの基本的な操作コマンド ファイル操作関数 | R によるファイルの作成、削除、移動などについて ディレクトリがなぜか削除できないとき https://skume.net/entry/2021/02/12/230851

stringrについて

半角全角の変換で便利 https://qiita.com/swathci/items/1ca9177e0c24c8dc1355#%E5%8D%8A%E8%A7%92%E5%85%A8%E8%A7%92 漢字ひらがなカタカナ Rで解析:文字列操作の決定版!「stringr」パッケージ 変数名を全部大文字にしたい rename_all(toupper) 数字とそ…

ggplotでよく見る記事

日付データの軸ラベル http://sakananoiroiro.seesaa.net/article/452917978.html 軸ラベルの回転 https://qiita.com/hoxo_m/items/1a0b71b5868686311747 軸の数値を整数スケールにしたい scale_x_continuous(breaks = scales::pretty_breaks()) pdfで日本語…

次元削減について

主成分分析をよく使っていたけど、高次元なデータはスパースすぎて、PCAだとうまくいかないらしい。高次元のときの点間の距離と、次元削減後の低次元のときの点間の距離がうまく対応しないみたい。 んで、tSNEやUMAPはPCAに比べて次元削減がええみたい。tSNE…

距離の近い点を検索する方法

R GIS

distances::nearest_neighbor_search()をつかってみた。引数で、distances::distances()で作った距離行列、検索する近傍点の数、検索する範囲を指定できる。 distances::nearest_neighbor_search( distances = distances::distances(座標データフレーム), k …