金魚亭日常

読書,ガジェット,競技プログラミング

R

IRKernel の auto completion

R

ファイル名を補完しようとしたら, "../dat" の結果が "../data/" ではなく "`../data/`" になってしまって困っていて調べたら, github.com このissue で修正が入ったので close されていて,その後にリリースもされているのだけれど, ビルドエラーでこの…

readr::read_csv() の列数を動的に変える

R

cols() は [] で切り出せないらしい dirname <- "data" d <- dir(dirname) %>% map_dfr(function(x){ # 先頭行を見て列数を判定する ncol <- readLines(file.path(dirname, x), n=1) %>% str_split(",") %>% .[[1]] %>% length() col_names <- c("V1", "V2",…

R のパッケージ読み込み時の警告の文字化け

Windowsでパッケージ読み込むと,コンソールで警告が文字化けする. こういうやつ package �edplyr�f was built under R version 3.5.2 library 関数の中身を読むと,sQuote(pkgname) で生成されるシングルクオーテーション ‘pkgname’ が文字化けしているら…

ggplot2 の軸をいじる

boxplot をグループごとに並べて表示したときに legend をx軸にもってきたい,とかいうことが起こった場合,描画された各要素の座標を取ってくればできるのではないか,とやってみた実験. 実用的には,パワポとかで編集した方がはやい. gtable にして中身…

readxl が numeric のセルを date だと判定してしまうやつ

R

下のようなデータのExcelファイルがあるとする. A B C 1.23 1.23 2018-01-01 これは, A1:C1 がヘッダー,つまり col_names A2 1.23 で「標準」 B2 が 1.23 で「数値」 C2 が 2018-01-01 で「日付」 となっている. readxl::read_excel() で読むと, d <- r…

R presentation について調べた

R

この,痒い所に手が届くggplot2作図の技 https://github.com/uribo/talk_180530_ggplot2_tips のプレゼンがいい感じだったので,R presentation について調べた. テンプレートは, github.com で,テーマは github.com らしい. remark.js を使っている. …

RStudio で IME が死んだときは

Windows 版の RStudio では IME が時々死んで,日本語が打てなくなる. そういうときは,Alt + Tab で他のアプリに1回スイッチして戻るとなおる.

R で data.frame をグループ分けして fit して プロットする

R

suppressPackageStartupMessages(library(dplyr)) library(purrr) library(ggplot2) library(RColorBrewer) species <- iris$Species %>% unique() %>% as.character() fits <- species %>% set_names() %>% map(function(x){ df <- iris %>% filter(Species…

dplyr::if_else で NA に置換

R

data.frame の各列のデータ型は同じでないといけない. NA は logical なので,dplyr::mutate で double の列の一部を NA で置換しようとするとエラーになる. library(dplyr, warn.conflicts = FALSE) data.frame(name=c("a", "b", "c"), value=c(1.2, 3.4,…

R で NFD 濁点ファイル名読み込み

Mac つかってるっぽい人から「データ.csv」みたいなやつをもらって,Rで読もうとしたときファイルが無いと言われ,dir()してみると濁点が分解されちゃっていた場合. 結論 基本的なファイル操作は可能なので,file.copy() でコピー・リネームしてから扱うの…

jupyter notebook の カスタム Exporter を作る

jupyter の公式ドキュメント の例のように,post save hook で nbconvert --to=script と nbconvert --to=html が走るようにしている. で,スクリプトのファイルは,Python の場合は Markdown のセルがコメントとして保存されるが,R (IRKernel) の場合だ…

ggplot2 book をビルドする

環境: Windows 10, TexLive 2018, MSYS64 なんか最後latexmk のmaxrepeat に達したから終了する,みたいなエラー出てたけどPDFはできた. 索引までできているので,一応ビルドできたっぽい 結構パッケージ入るので,ライブラリ切ったほうが良かったかも レポ…

cairo_pdf か CairoPDF か

R でグラフ保存するときは ggsave() じゃなくて Cairo::CairoPDF を使っていたが,結局のところ図は全部PDFで保存してそこから Imagemagick で変換,としているので,組み込みの cairo_pdf でもいいのでは,と気づき,実験. library(ggplot2) library(Cairo…

readxl で 日付と文字列が混在している列を読み込む

R

readxl でExcelファイルを読み込むときに,日付列が文字列と日付の混在だった場合,とりあえず col_types をlist にして読み込む. d <- read_excel("data.xlsx", skip = 2, col_names = c("Date", "Temp", "RH", "WindSpd", "GustSpd", "Rain", "WindDir"),…

Windows の R を更新

来月には 3.5 が出るらしいが,3.3 から 3.4 に. パッケージはコピーせず,新規にインストールする. System と User のライブラリを分けているので, .libPaths(c(Sys.getenv('R_LIBS_USER'), .libPaths())) してから,RStudio のメニューでパッケージイン…

ggplot2, annotate(), italic, sprintf()

R

library(dplyr) library(ggplot2) r <- 0.80 lb <- paste0('\'', sprintf("%.2f", r), '\'') iris %>% ggplot(aes(x = Petal.Width, y = Petal.Length, group=Species, colour = Species)) + geom_point() + annotate('text', label=paste(expression(italic…

R の .Renviron の ${R_HOME}

これの話 etc/Rcmd_environ をコピーして .Renviron を作る場合, R_SHARE_DIR=${R_HOME}/share と書かれているが,この ${R_HOME} は何になっているのか,という話. Rを起動した後に Sys.getenv() して確かめてみると, C:/R/R-3.3.2 といったRのインスト…

`dplyr::case_when()` の中身を先にlistに入れておく

R

ドキュメントには patterns <- list( TRUE ~ as.character(x), x %% 5 == 0 ~ "fizz", x %% 7 == 0 ~ "buzz", x %% 35 == 0 ~ "fizz buzz" ) case_when(!!! patterns) みたいに書いてあるので, list に入れればいいかと思ったけど,少し違った. df,df.con…

R でコマンドライン引数を扱う

R

これ stackoverflow.com に回答したときに,コマンドライン引数の扱いについて調べた. スペースを含む引数は "--arg=hoge fuga" のように全体をクオートで囲う --args='hoge fuga とするとスペースで切られる optparseを使うと Python っぽく書ける 自作関…

ggplot2で日本語軸ラベルのやつ(RStudio)

R

if (.Platform$OS.type == "windows"){ windowsFonts(msgothic = windowsFont("MSGothic")) jpfont <- element_text(family = "msgothic") } else if (Sys.info()["sysname"] == "Darwin") { jpfont <- element_text(family = "HiraKakuPro-W3") } else { jp…

Jupyter notebook の python から rpy2 で R のパッケージを呼び出す(Windows)

Miniconda 使っているので, conda install rpy2 でインストール. Rは C:\R\R-3.3.2 にインストールしてある. Jupyter notebook を起動して, 環境変数 R_HOME を設定していない場合, import os os.environ["R_HOME"] = "C:\\R\\R-3.3.2" として,設定す…

`LeafArea` を `Fiji` で動かす (Windows編)

LeafAreaという R から ImageJ を動かして葉面積を測定できるべんりパッケージがあるんですが,Fiji だとうまく動きません. というのは,ImageJ と Fiji ではフォルダ構造とかファイル名とかが異なるからです. LeafArea package が想定しているフォルダ構…

ggplot2 で 二軸グラフ

R

ggplot2 のsec.axis を使ってみた. https://whatalnk.github.io/r-tips/ggplot2-secondary-y-axis.nb.htmlwhatalnk.github.io 流れとしては, 第二軸としてプロットするデータを第一軸の範囲に合わせてスケールしてプロットする scale_y_continuous() の引…

RStudio の R Presentation (Windows の場合)

R Presentation ファイル(.Rproj)は knitr::knit() でmarkdownに変換されてPreviewされる. knitr::knit() 処理の流れは, 引数 encoding の判定・および変換 readLines() で読み込み 拡張子の判定 Chunk もしくは Inline code が含まれているかどうかの判…

sapply の simplyfy=FALSE

R

文字列ベクトルxをlapplyに渡して,data frame とってきてそれをlistで返す,ってことをすると,結果のlistのnamesには元の文字列ではなくて,インデックスが入る. これを,元の文字列を保持したい時は,sapply(x, simplyfy=FALSE) を使う. R sapply(simpl…

R Markdown Notebook を試した

R

最近Rを使うときはJupyter notebook ばかりでRStudioを開くことがほとんどなくなっていたのだけれど,どうやらRStudioに(RMarkdownに)Notebookモードが入るらしい. www.r-bloggers.com この記事だと,daily build を入れて rmarkdown を githubからインス…

Visual Sutudio Code に Rmd のシンタックスハイライト追加

R

node.js インストール npm install -g yo generator-code yo code 対話的に進むので,それに従えばいい. .tmLanguageファイルは knitr_reports/Rmd.tmLanguage を使わせてもらった. 出来たフォルダを %USERPROFILE%\.vscode\extensions に配置すると使える…

IRkernel でプロットサイズ変更

R

現在の値 IRkernel::get_plot_options() $antialias "gray" $bg "white" $family "sans" $height 7 $pointsize 12 $quality 90 $res 120 $width 7 幅 4, 高さ 3 に変更 options(repr.plot.width=10, repr.plot.height=7)

Jupyter の IRkernel で日本語を含んだプロットをする(Windows)

R

Mac の quartz() を使った記事を見て,Windows でも Cairo を使えばできそうだと思ってやってみたらできた. JupyterのR kernel使用時に日本語を含むグラフを描く - Qiita 結果(Gist) Jupyter の IRkernel で日本語を含んだプロットをする(Windows) ただ…