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

R

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

RMSTの算出

生存時間分析でRMSTを出したい。 こちらではsurvRM2パッケージを使うと良いとある。 nshi.jp survRM2パッケージのvignetteはこちら。 https://cran.r-project.org/web/packages/survRM2/vignettes/survRM2-vignette3-2.html こんな感じでRMSTを算出してくれ…

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…

rowSumsはrowwise+acrossで代替する

特定の条件のもとカウント回数を算出したいときは以下のようにやる。 iris %>% rowwise() %>% mutate(hoge = sum(across(Sepal.Length:Sepal.Width) >= 1))

ggplot2の描画データを取り出したいときはggplot_build()

geom_line()で折れ線プロットを描いた後、geom_smooth()して平滑化することなどが多々ある。 で、その平滑化した結果から例えばピーク検出したい場合もあったりするが、その際、描画結果のデータが欲しくなる。 もちろん、geom_smooth()で用いた平滑化の手法…

dlopen(/Library/Frameworks/R.framework/Versions/4.0/Resources/library/Rcpp/libs/Rcpp.so, 6): Symbol not found: _EXTPTR_PTR

とあるパッケージをgithubからインストールしようとしたら失敗した上に、以降tidyverseパッケージをロードしようとすると以下のようなメッセージが出てエラーになる。 dlopen(/Library/Frameworks/R.framework/Versions/4.0/Resources/library/Rcpp/libs/Rcp…

最近officerパッケージでハマったこと3つ

Rひとりアドベントカレンダー26日目です。 Rのofficerパッケージは便利です。 パワーポイントでレポートが簡単に作れる。 こんな感じで会社用のテンプレートを読み込んで出力なんてことも簡単にできる。 library(officer) read_pptx("会社のテンプレート.ppt…

RでUMINの臨床試験データを取得する

Rひとりアドベントカレンダー22日目です。終盤に差し掛かってまいりました。 さて、国内の臨床試験はUMIN-CTRに登録するようになっている(特定臨床研究はjRCTだったりするが)。 そしてUMIN-CTRはスナップショットとして登録情報をCSVで公開している。 http…

老化による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でunix時間からJSTに変更する際はas_datetime()

よくあるタイムスタンプであるUNIX時間をJST(日本標準時)に変更したい。 もちろんbaseのas.POSIXctを使うという手もあるが、私はoriginを指定するのに疲れたみたい。baseを嫌いになったわけじゃない。 ということでlubridateパッケージのas_datetimeでタイ…

BigqueryのJSONデータをRで読み込む際はndjsonのstream_in関数を利用する

Bigqueryで取得したデータを整形したい。 Bigqueryで全て完結するならそうしたいがとりあえず時間がないのである程度BQでやってあとはRでやることにする。 しかしネストされているのでJSONでしかダウンロードできないよと言われてしまった。 んじゃJSONでダ…

Rでweb APIを使わずに5行で顔認識する

こんな話がある。 私は大人気ないのでRなら5行、いや実質3行だよとか言ってしまう。 以下はopencvパッケージのサンプルコードそのまま。 install.package("opencv") # インストール library(opencv) unconf <- ocv_read('https://github.com/dichika/ojisa…

化合物データの前処理をやりたい

化合物データの前処理をやる必要が出てきた。 ということである程度用語とかツールのイメージを把握しておきたい。 知ってる限りでとりあえず列挙。知りたいことを整理する。 1.化合物データのフォーマット確認:まずはSDFとSMILESを覚えておけば良いか。 2.…

CSVファイルを読み込む際「nullが埋め込まれている」とエラーが出た時はUTF-16LEを疑う

Windowsのもと作られたCSVファイルを読み込む際、CP932を指定しようというのは定石だが、それでもうまくいかないことがある。 エラーメッセージを読むと「nullが埋め込まれている」とある。 意味がわからない。 「nullが埋め込まれている」だから大方「R emb…

いまどきの固定長データはread_fwf()を用いて読み込む

こんな感じのデータがあったとする。 library(readr) fwf_sample <- readr_example("fwf-sample.txt") cat(read_lines(fwf_sample)) John Smith WA 418-Y11-4111 Mary Hartford CA 319-Z19-4341 Evan Nolan IL 219-532-c301 いわゆる固定長データであり、バ…

数字をアルファベットに変換したい時はchartr()を使う

数字をアルファベットに変換したい、もしくはその逆でアルファベットを数字に変換したいというときがたまにあります。 例えば、11, 12, 13 をAA, AB, ACに変換したいという時です。 こういう時はRではchartr()を利用します。 chartr("123456789", "ABCDEFGHI…

折れ線グラフで各系列にラベルをつける際はgghighlightを用いるのが楽なんじゃなかろうか

こういうデータがあるとする。 library(dplyr) library(ggplot2) library(gghighlight) ChickWeight_diet <- ChickWeight %>% group_by(Diet, Time) %>% summarise(weight = mean(weight)) > ChickWeight_diet # A tibble: 48 x 3 # Groups: Diet [?] Diet T…

Rで時刻の差をとるときは単位を指定する癖をつける(もしくはlubridate::time_length()を用いる)

時刻を入れたデータフレームがあるとする。 > smp <- data.frame(now=Sys.time(), then=Sys.time()-60) > smp now then 1 2019-02-09 10:30:15 2019-02-09 10:29:15 で、時刻の差を計算すると、そこに単位も含まれてくる。 > smp$diff <- with(smp, now - th…

ggplot2で複数の因子によるグループで折れ線プロット

各因子を結合した列を追加すればいいっちゃいいのだが、ggplot2上で指定する方法もあったよなと思いながら思い出せなかった+ググりづらかったのでこれも備忘。interaction()を使う。 library(ggplot2) library(dplyr) # ChickWeightデータで初回の体重が43以…

R関係備忘録

最近本当に忘れっぽい。 Rのパッケージ名なんて、イメージは浮かぶものの正確な名称が思い出せない。 ふわっとググるんだけど当然出てこない。 仕方なく、よく見かけるブログの記事を総当たりしてやっと見つかることもままある。 ということでここにメモして…

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

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

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

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

ggplot2でEXILEみたいなdensity plotを描く

タイトルのようなイメージしか持っておらず、検索しても出てこず、ホクソエム人力検索でやっと該当パッケージが判明したので、記事にしてインデックス化しておく。 その名はggridgesパッケージ。かつてはggjoyパッケージと呼ばれていたものが改名されたらし…

Rでslack上の画像を保存してPDFにしてgoogle driveに保存する

タカヤナギ=サンアドベントカレンダー21日目の記事です。ホクソエム社にはタカヤナギ=サン謹製の画像がアップロードされるチャンネルがあり、他メンバーはアップロードされる画像を黙々とダウンロード、そしてPDFに変換しているわけですが、こんなことは人…

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

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日ということでリンク先のこれを試してみることにする。…