Copyright (c) 2021-2022 Zettsu Tatsuya
Pythonで機械学習や統計的分析をするプログラマが、Rを使うために最低限必要なことをまとめました。
Releases にある、 r_in_30minutes.html をダウンロードしてご覧ください。
同梱のDockerfileから、Dockerコンテナを作成して、コンテナ上でRStudio Serverを起動します。
Dockerfileがあるディレクトリ( Rin30minutes/ 直下)に移動して、Dockerコンテナをビルドします。イメージ名は r30min とします。動作確認を Windows 10 上のDockerで行いました。必要なら sudo をつけて実行して下さい。
cd /path/to/Dockerfile
docker build -t r30min .
ビルドしたのと同じディレクトリに移動して、Dockerコンテナを起動します。詳しい起動オプションは、rocker/rstudioに載っています。ここでは以下の通り設定します。
docker run -e PASSWORD=yourpassword -p 8787:8787 -d r30min
- ログインアカウントは、Dockerイメージのデフォルト設定である rstudio のままにする
- パスワードは、上記の -e PASSWORD 引数で指定する。指定しないと、RStudio Server を起動できない。
- RStudio Server のポートは、デフォルト通り TCP 8787 を使い、ホストOSの同一ポートから転送する
- -d オプションをつけて、 detached で実行する
- イメージ名はビルド時に指定した r30min とする
Dockerコンテナを起動したホスト http://example.com:8787/ に、Webブラウザからログインすると、RStudio Serverの画面が出ます。ホスト名は適宜読み替えてください。
後述の通り、描画するデータを横浜市のオープンデータのサイトからダウンロードします。敢えてDockerコンテナのビルド時ではなく、実行時にダウンロードするようにしています。
RStudio Server上で download_data.R を開き、Ctrl-Alt-R を押してこのRスクリプトを実行します。ダウンロードに成功したら、incoming_yokohama サブディレクトリにCSVファイルが2つできています。
RStudio Server上で r_in_30minutes.Rmd を開き、Knit ボタンを押してHTMLに変換します。HTML文書が別ウィンドウで表示されますが、Webブラウザがポップアップウィンドウをブロックすると思いますので、ブロックを解除してください。
変換後のHTMLファイルを、DockerコンテナからホストOSに移動することもできます。そのためにはDockerコンテナを起動する時に、ホストOSのファイルシステムをDockerコンテナにマウントする必要があります。具体的な方法は別途検索ください。おそらく、コンテナ上のユーザ rstudio と、ホストOSのユーザアカウントをあわせる必要があるでしょう。
WindowsのドライブをDockerコンテナにマウントするには、以下のように -v オプションを使います。ドライブ名を指定する:をつけるので、 -v オプションの引数に:が2回出ます。
docker run -e PASSWORD=yourpassword -p 8787:8787 -v c:/path/to/Rin30minutes:/home/rstudio/work -d r30min
RStudio Server の Console上で、 rmarkdown::render
を実行します。デフォルトでは長い行を折り返しますが、改行をそのままHTML文書の改行にする markdown もあるので、下記のオプションの設定して折り返さない方がよいでしょう。
rmarkdown::render("r_in_30minutes.Rmd",
rmarkdown::github_document(
toc = TRUE, hard_line_breaks = TRUE, pandoc_args = c("--wrap=none")))
以下の設定を行います。加えて、ロケールを ja_JP.UTF-8 に変更しています。ロケールの設定が無いと、環境によっては日本語の出力が文字化けするかもしれません。
本文は、R Markdownで書いてあります。HTML化するためには本レポジトリをダウンロードして、同梱の r_in_30minutes.Rmd を以下の手順でHTMLに変換します。
- R をインストールする
- RStudio をインストールする
- Rに 必要なパッケージ をインストールする
- Rで 日本語フォント を使えるようにする
- Python, Perlおよび各種UNIXコマンドを実行できるようにする
- 読み込んでいる データ をダウンロードする
- RStudioで r_in_30minutes.Rmd を開き、knitボタンを押す
- パッケージが足りないと言われたら、その都度インストールする
RStudioを開いて以下を実行して、 r_in_30minutes.Rmd が必要とするパッケージをインストールしてください。 Dockerを使う場合、親イメージ(rocker/tidyverse)に用意されているパッケージは、明示的にインストールする必要はありません。
install.packages("assertthat")
install.packages("cloc", repos = c("https://cinc.rud.is", "https://cloud.r-project.org/"))
install.packages("extrafont")
install.packages("functional")
install.packages("jsonlite")
install.packages("kableExtra")
install.packages("knitr")
install.packages("lintr")
install.packages("lubridate")
install.packages("markdown")
install.packages("plotly")
install.packages("R6")
install.packages("RColorBrewer")
install.packages("reticulate")
install.packages("rlang")
install.packages("styler")
install.packages("tidyverse")
install.packages("xfun")
r_in_30minutes.Rmd が必要とするパッケージは、以下のbashスクリプトを実行すると得られます。 cloc パッケージはダウンロード元を指定する必要があります。
bash list_packages.sh
図をきれいに描くために、 Migu 1M フォントを使用しています。 こちら からダウンロードして、インストールしてください。
RStudioを開いて以下を実行して、RでMigu 1M フォントが使えるようにします。この処理は数分かかります。詳しくは こちら に説明があります。
library(extrafont)
extrafont::font_import()
extrafont::loadfonts()
View(extrafont::fonttable())
Linuxであれば特に何もしなくても、RおよびRStudioからPython, Perlおよび各種UNIXコマンドを実行できるでしょう。Python3のコマンド名がpython以外の場合、 reticulateパッケージで 設定 します。
library(reticulate)
reticulate::use_python("/path/to/python3")
Windows では環境変数PATHに、Python と Perl へのパスを通します。 Perlは Rtools に含まれている実行ファイルを使えばよいですが、Cygwin などを入れている場合は Rtools と混ざらないように環境変数PATHを設定します。
NumPyがインストールされていなければ、インストールしてください。
r_in_30minutes.Rmd からHTML文書を生成すると、 横浜市のオープンデータ を編集・加工したものが埋め込まれます。これらは 利用条件等 に記載の、 CC BY 4.0 に基づいています。
埋め込むデータは、本レポジトリに同梱していません。HTML化するたびに横浜市のサイトにアクセスしないよう、r_in_30minutes.Rmd はサイトから自動的に読み込むこともしません。下記リンク先からダウンロードして、 incoming_yokohama サブディレクトリに置いてください。
内容とリンク先 | 更新日 | ファイル名 |
---|---|---|
人口と世帯数の推移 | 最新版(2020年まで) | jinkosetai-sui.csv |
男女別人口及び世帯数-行政区 | 令和3年12月(2021年12月) | e1yokohama2112.csv |
本レポジトリのライセンスは、MITライセンスです。
R から Stan を使う方法を stan_example.Rmd に書きました。 Releases に含めましたのでご覧ください。Dockerコンテナをビルド、起動するには、以下のコマンドを実行します。
cd /path/to/Dockerfile
docker build -t r30min .
docker build -f Dockerfile_stan -t stan .
docker run -e PASSWORD=yourpassword -p 8787:8787 -d stan
RからC++をRcpp経由で使えるように、RからJuliaを使うことができます。Stanを使うDockerコンテナに、Juliaと、RからJuliaを使うためのパッケージを追加します。Dockerコンテナをビルド、起動するには、以下のコマンドを実行します。
cd /path/to/Dockerfile
docker build -t r30min .
docker build -f Dockerfile_stan -t stan .
docker build -f Dockerfile_julia -t julia .
docker run -e PASSWORD=yourpassword -p 8787:8787 -d julia
整数のビット1の個数を数える(population count)も、この通り。
library(JuliaConnectoR)
popcount <- juliaEval("xs -> map(x -> count_ones(x), xs)")
popcount(as.integer(0:15))