R

行列を1行ずつリストに変換する

R

行列を1行ずつリストに変換したいという非常にニッチなニーズがあり、少し苦労したのでコードをメモ。 lapply(seq_len(nrow(mat)), function(i) mat[i,])

IPW+Cox回帰

R

ATEとしてハザード比を求める必要があったので、IPWを使った。 ダミーデータで備忘録を残しておく。 library(survminer) library(survival) library(cobalt) library(tidyverse) # データの準備 diabetic_mod <- diabetic %>% filter(eye == "left") %>% mut…

メモリに乗らないデータを読み込むパッケージの備忘録

R

メモリに乗らないデータをRでどう処理するかという問題は定期的に話題になる。 そのたびに「DBにつっこんでSQLで処理するじゃろjk」「せっかくだから俺はawkを使うぜ」「私のメモリは64GBです」などと喧々諤々しており既視感にとらわれるのだが、我々が古い…

timezoneだけを変換する場合はforce_tzで時刻も変換する場合はwith_tz

R

Rのlubridateパッケージにおけるtimezone変換をいつも忘れてヘルプを見ているのでメモ。 timezoneに合わせて時刻も変換したい場合はwith_tz、 timezoneだけを置き換えたい場合はforce_tz 。 library(lubridate) > (tmp <- Sys.time()) [1] "2021-04-23 10:54…

老化によるset.seed忘れを防ぎたい

Rひとりアドベントカレンダー1日目。 set.seed()は乱数の種を設定する関数ということはよく知られている。 乱数の種を設定することで、乱数に再現性がとれるようになる。 例えば以下の2行のコードはまとめて実行することで毎回同じ結果を返す。 > set.seed(…

不正な入力がないだろうと思われるデータなのに不正な入力がありましたと言われた時は文字コードを疑う

R

read.csv()で不正な入力がありましたと言われる。 警告だけだからまあ無視するかと思いきやデータを読み込めていない。 > data <- read.csv('data/hoge.csv', as.is = TRUE, fileEncoding = "CP932") 警告メッセージ: 1: read.table(file = file, header = h…

RでRuleFitを実行できるパッケージpr

アンサンブル学習は便利だ。 randomForestなりLigthGBMなりXGBoostなり、適当にデータを突っ込んでもそれなりの予測モデルが得られる。 feature importanceという形でどの特徴量が予測に効いているかもわかる。 しかし、どこのセグメントが最も効果的かまで…

本日の懺悔:dplyrでsliceをもっと活用しようね

懺悔です。 今まで私はある列の最小値を含む行を抽出する際、filter()を用いて以下のように書いていました。 library(dplyr) iris %>% filter(Sepal.Length == min(Sepal.Length)) しかしbaseの書き方であればwhich.min()を使って以下のように書けます。 iri…

自分の血糖値データを分析する

R

食事が与える身体的・精神的影響については常々気になっていた。 代謝の変化を測定する必要があるのだが、体重はあまりに大雑把だし、最近のウェアラブルデバイスで測定できる脈拍は代謝を反映しているとは言い難い。 ということで先々週より持続的に血糖値…

mmapのエラー

R

mmapを用いてデータを読み込もうとすると以下のエラーが出た。 mmap(binfile, char()) でエラー: unable to open file: possible permission issue. パーミッションに問題はない。 検索すると、ファイルパスにチルダを用いていたことが原因のようで、そこを…

keras-PlaidML インストールチャレンジ

R

いい話を聞いた。macOSのRでもKerasのbackendにPlaidML指定したらちゃんとAMDのGPUで動いたのでようやくdeepやる気が出てきた。https://t.co/TUAJC92ehW— Hoxo_Mass_Spectrum (@siero5335) 2018年6月24日ということでリンク先のこれを試してみることにする。…

as.Dateするときはタイムゾーンをちゃんと指定しよう問題

R

POSIXctな時刻データにas.Dateすると、1日前の日付に変わってしまう。 > as.POSIXct("2001-01-01 00:00:01") [1] "2001-01-01 00:00:01 JST" > as.Date(as.POSIXct("2001-01-01 00:00:01")) [1] "2000-12-31" これはタイムゾーンを指定しないとGMTと解釈され…

RStudioでPull/Pushボタンがグレーアウトしている時の対処

R

コマンドラインからgit pushする際に -u をつけてpush先のブランチをデフォルト設定しておくこと。 https://www.r-bloggers.com/things-i-forget-pushpull-greyed-out-in-rstudio/ https://qiita.com/sunstripe/items/a39f4bb835e1f08760e7そもそもVersion C…

tidyrのspread()の列の並べ替えを明示的に指定する

R

tidyrパッケージのspread()でwide-formatのデータに変換した時の列の順序を明示的に指定したい。方法はいくつかあるが、keyに指定する列にfactorでlevelを与えておくのがわかりやすかったので採用。 https://stackoverflow.com/questions/29381069/implicit-…

write.xlsxで複数シートに一度に書き込む

R

最近、XLConnectパッケージからopenxlsxパッケージに鞍替えしました。 理由は少しでも大きななデータをExcelシートに出力しようとするとXLConnectでは対応できないケースがあったからです。 で、openxlsxについての記事はたくさん書かれているのだけれども、…

口コミからプロバイダの速度を比較する

R

プロバイダわからん。 とりあえず下りの速度が遅すぎなければいい。 ということで口コミサイトの結果から比較する。 以下書きなぐりコード。 library(rvest) library(dplyr) library(tidyr) library(stringi) # 以下よりソースをダウンロード # http://netsp…

Rでモダーンにテキストマイニングする本の話

R

Text Mining with R - A Tidy Approach という本が最近出ました。Text Mining with R: A Tidy Approach作者: Julia Silge,David Robinson出版社/メーカー: O'Reilly Media発売日: 2017/07/02メディア: ペーパーバックこの商品を含むブログ (1件) を見る著者…

Rでパスからファイル名を抽出したいときはbasename()

R

いつも忘れて正規表現とか書きがちなのでメモ。 > path <- "/Users/dichika/teramonagi.png" > basename(path) [1] "teramonagi.png"

クリップボードとdputでデータを共有する

R

Rのデータ整形について質問したいんだけどデータはExcel上にある、そして質問は今この瞬間に投げかけたい、ファイルに出力している暇などない、そんな事態、あると思います。 そんな時はdput関数を使ってください。 クリップボードにコピーした結果を共有す…

パッケージビルド時に no packageと言われた時の対処法

R

パッケージビルド時に以下のようなメッセージが出た。 Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : there is no package called ‘bigrquery,dplyr’ パッケージが無いといわれているが、いずれのパッケージもインストール…

Rで集中線を描く

R

写真から顔を検出したら集中線を描くのが紳士のたしなみ。 以下のアルゴリズムを参考にRでタカヤナギ=サンに集中線を描きます。 http://stamefusa.hateblo.jp/entry/20120115/1326636719 顔領域の検出については以前の記事を参考のこと。ひとまずこんな感じ…

Rmd上でhtmlwidget系パッケージを用いて複数出力する

R

Rmarkdown上でhtmlwidget系のパッケージを用いて出力する際、以下のようにforループを回して複数の出力を実現しようとするとうまくいかない。 ```{r} library(dplyr) for(s in unique(iris$Species)){ tmp <- iris %>% filter(Species == s) datatable(tmp) …

Rの良いところと悪いところうんぬんのメモ

R

たまに見かける「Rの良いところは統計家によって開発されたことだ。そしてRの悪いところは統計家によって開発されたことだ」という言葉、Bow Cowgillが言ったらしい。 I was on a panel back in 2009 where Bow Cowgill said, "The best thing about R is th…

集合写真で水中メガネの人に枠を付ける

R

前回の記事の集合写真を拡大すると、さらに細かくメガネの種類を検出できるらしい。 http://uribo.hatenablog.com/entry/2017/04/05/224401ということでメガネの種類ごとに色分けした顔領域を描画したい。 画像の読み込みと拡大 画像の拡大には今回はmagick…

sfパッケージのst_というプレフィックスの語源

R

sfパッケージの関数にはst_というプレフィックスがついているのだが、この由来がvignetteやreferenceにも書いておらずもやもやしていた。 sfパッケージなんだからsf_じゃないのかと。 st_as_sf()なんて、stオブジェクトをsfオブジェクトにする関数じゃないの…

集合写真のメガネの数をカウントする

R

こんな話がある。フーターズに行って「わーお客さんたちみんなメガネですねー」と言われてからコンタクトを真剣に検討している— 煮穴子 (@dichika) 2013年5月8日実際、昨晩開催されたGlobal TokyoRの集合写真においてもメガネが目立つ(ゲストスピーカーのHe…

httrパッケージのOAuthキャッシュ

r

httrパッケージのOAuthのキャッシュの場所はoptions()で設定する。 bigrqueryを使ったパッケージをチームで共有したい時に利用した。 options("httr_oauth_cache"="~/.httr-oauth")

日付を丸める関数はlubridateパッケージを見よ

R

いつも忘れるのでメモ。 round_date()は気をきかせすぎな気もするのでfloor_date()をとりあえず使っていこう。 library("lubridate") > floor_date(as.Date("2017-03-22"),"month") [1] "2017-03-01" > round_date(as.Date("2017-03-22"),"month") [1] "2017…

またおまえかtibble

従来の集計処理をdplyrに置き換えていく中でこういうエラーが出た。 Error in function_list[[k]](value) : (list) object cannot be coerced to type 'double' これまでは問題なく集計処理できていたのにdplyrを使った途端このエラーである。 問題を突き止…

XLConnectにtblクラスのデータをつっこむとエラーになるから注意

XLConnectにdplyr等で操作した後のtblクラスのデータをつっこむとエラーが出る。 たとえば以下のようなコードを実行する。 smp <- loadWorkbook("sample.xlsx", create=TRUE) smp["サンプル"] <- iris %>% group_by(Species) %>% tally() こういうエラーが出…