パッケイジplumberのインストール
【R web API】 Rで分析した結果を確認できるように表示 簡単なインプットができてアウトプットされる仕組み 機械学習モデルの活用
Ubuntuで実行
sudo apt install libsodium-dev
Rのコンソールで実行
#パッケージのインストール
install.packages("plumber", dependencies = T)
#パッケージの読み込み
library("plumber")
R 文字コード表
文字コード表(コード対応表)
0x03A0 Π
0x03A1 Ρ
0x03A3 Σ
0x03A4 Τ
0x03A5 Υ
0x03A6 Φ
0x03A7 Χ
0x03A8 Ψ
0x03A9 Ω
0x03B1 α
0x03B2 β
0x03B3 γ
0x03B4 δ
0x03B5 ε
0x03B6 ζ
0x03B7 η
0x03B8 θ
0x03B9 ι
0x03BA κ
0x03BB λ
0x03BC μ
0x03BD ν
0x03BE ξ
0x03BF ο
0x03C0 π
0x03C1 ρ
0x03C3 σ
0x03C4 τ
0x03C5 υ
0x03C6 φ
0x03C7 χ
0x03C8 ψ
0x03C9 ω
0x0401 Ё
R 作業ログの作成
作業ログの作成
#パッケージのインストール
install.packages("luzlogr")
#パッケージの読み込み
library("luzlogr")
#作業ディレクトリにlogファイルを作成:openlogコマンド
logfile <- openlog("test.log")
#logファイルにメッセージを書き込み:printlogコマンド
printlog("メッセージ")
printlog(2*3)
#logファイルに書き込みを終了:closelogコマンド
#セッション情報を書き込む:sessionInfoオプション;TRUE/FALSE
closelog(sessionInfo = TRUE)
R 現在の作業ディレクトリの確認と変更
現在の作業ディレクトリの確認と変更
# 確認
getwd()
# 作業ディレクトリの位置の変更は、RStudioのメニューバーから、
#「Session」→「Set Working Directory」→「Choose Directory」で変更できます。
setwd("~/<dirctory>")
R ログでシャイニーアプリをデバッグ
ログでシャイニーアプリをデバッグします。
# ログディレクトリへ移動し調べます。
cd /var/log/shiny-server
ls -al
rmd-shiny-20220830-034118-32877.log rmd-shiny-20220830-112101-37013.log sms-shiny-shiny-20220903-023934-38343.log
sudo cat
Error in library(httr) : there is no package called ‘httr’
Calls: runApp ... sourceUTF8 -> eval -> eval -> ..stacktraceon.. -> library
Execution halted
# library(httr) がないのでエラーが出ています。
# ユーザーrstudioでは、動くのですがユーザーshinyでは動きませんので追加します。
# ユーザーshinyになってhomeディレクトリに移動します。
su - shiny
$ pwd
/home/shiny
# httrをインストールします。
R
> install.packages("httr")
> The downloaded source packages are in
‘/tmp/RtmpGAUDSy/downloaded_packages’
Github
install_github('ramnathv/rCharts')
# 以下のようにinstall_githubが使えるようにします。
library(remotes)
install_github('ramnathv/rCharts')
R 乱数
set.seed()は乱数種を指定する関数で、常に同じ乱数を発生させられる。
> rnorm(5)
[1] -1.1589164 0.6717548 -0.5479705 -0.3373437 0.1150608
> rnorm(5)
[1] -0.7928601 0.4900138 0.2429032 0.1189651 -0.1188704
> set.seed(1);rnorm(5)
[1] -0.6264538 0.1836433 -0.8356286 1.5952808 0.3295078
> set.seed(1);rnorm(5)
[1] -0.6264538 0.1836433 -0.8356286 1.5952808 0.3295078
R toJSON関数
toJSON関数(jsonlite)の挙動
# ubox()なし
x <- list(aaa = "あああ", bbb = "いいい") %>% toJASON
cat(x)
{"aaa":["あああ"],"bbb":["いいい"]}
# ubox()あり
x <- list(aaa = unbox("あああ"), bbb = unbox("いいい")) %>% toJASON
cat(x)
{"aaa":"あああ","bbb":"いいい"}
R 小数点の切り捨て・上げ
小数点の切り捨て・上げに関するコマンド
#roundコマンド
#digitsオプションで指定した桁で四捨五入
round(11.12345, digits = 4)
[1] 11.1235
#ceilingコマンド
#指定した値(整数部分)未満にならない最小の整数
ceiling(11.000001)
[1] 12
#floorコマンド
#指定した値(整数部分)を超えない最大の整数
floor(11.000001)
[1] 11
#truncコマンド
#小数点部分を切り捨て
trunc(11.11111)
[1] 11
#formatコマンド
#桁数を指定:nsmallオプション
format(11.000001, nsmall = 3)
[1] "11.000"
#おまけ
#string::str_padコマンドを使用する
#頭に0を追加して揃える:padオプションで頭に追加する内容を指定する
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
11 %>% str_pad(4, pad = 0)
[1] "0011"
#少数点以下に0を追加
#例では小数点以下を4桁にする
#切上げにならない場合があるので注意
sprintf(11.10005, fmt = '%#.4f')
[1] "11.1000"
R 「Nested Data」の操作
「Nested Data」の操作を「unnest」せずに簡単にできるパッケージ
#パッケージのインストール
install.packages("nplyr")
#パッケージの読み込み
library("nplyr")
###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 30
TestData <- tibble(Group = sample(paste0("Group_",
formatC(1:4, width = 2, flag = "0")),
n, replace = TRUE),
Chr_Data = sample(c("や", "ま", "ぐ", "ち",
"す", "み", "よ", "い"),
n, replace = TRUE),
X_num_Data = sample(c(1:50), n, replace = TRUE),
Y_num_Data = sample(c(51:100), n, replace = TRUE)) %>%
group_by(Group) %>%
nest(NestData = -Group) %>%
ungroup() %>%
arrange(Group)
########
#並び替え:nest_arrangeコマンド
#降順:dplyr::descコマンドと組み合わせる
TestData %>%
nest_arrange(NestData, Chr_Data, desc(X_num_Data)) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 4
# Group Chr_Data X_num_Data Y_num_Data
# <chr> <chr> <int> <int>
#1 Group_01 や 32 87
#2 Group_01 ま 26 52
#3 Group_01 ぐ 17 98
#4 Group_01 ち 26 58
#5 Group_02 す 41 67
#6 Group_02 み 22 56
#カウント:nest_countコマンド
TestData %>%
nest_count(NestData, Chr_Data) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 3
# Group Chr_Data n
# <chr> <chr> <int>
#1 Group_01 や 3
#2 Group_01 ま 1
#3 Group_02 ぐ 2
#4 Group_02 ち 3
#5 Group_02 す 1
#6 Group_02 み 4
#mutateを適応:nest_mutateコマンド
TestData %>%
nest_mutate(NestData,
X_num_Data = X_num_Data / 10,
Y_num_Data = Y_num_Data * 0.1) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 4
# Group Chr_Data X_num_Data Y_num_Data
# <chr> <chr> <dbl> <dbl>
#1 Group_01 や 3.2 8.7
#2 Group_01 ま 2.6 5.8
#3 Group_01 ぐ 1.7 9.8
#4 Group_01 ち 2.6 5.2
#5 Group_02 す 4.9 8.2
#6 Group_02 み 2.9 5.6
#列の移動:nest_relocateコマンド
TestData %>%
nest_relocate(NestData, X_num_Data, .after = Y_num_Data) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 4
# Group Chr_Data Y_num_Data X_num_Data
# <chr> <chr> <int> <int>
#1 Group_01 * 87 32
#2 Group_01 * 58 26
#3 Group_01 * 98 17
#4 Group_01 * 52 26
#5 Group_02 * 82 49
#6 Group_02 * 56 29
#列名の変更:nest_renameコマンド
#nest_rename_withコマンドもあります
TestData %>%
nest_rename(NestData, 'KARADA-GOOD' = X_num_Data) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 4
# Group Chr_Data `KARADA-GOOD` Y_num_Data
# <chr> <chr> <int> <int>
#1 Group_01 * 32 87
#2 Group_01 * 26 58
#3 Group_01 * 17 98
#4 Group_01 * 26 52
#5 Group_02 * 49 82
#6 Group_02 * 29 56
#列の選択:nest_selectコマンド
TestData %>%
nest_select(NestData, X_num_Data) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 2
# Group X_num_Data
# <chr> <int>
#1 Group_01 32
#2 Group_01 26
#3 Group_01 17
#4 Group_01 26
#5 Group_02 49
#6 Group_02 29
#summariseを適応:nest_summariseコマンド
TestData %>%
nest_summarise(NestData,
n = n(),
Median_X_num_Data = median(X_num_Data),
Mean_Y_num_Data = median(Y_num_Data)) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 4 x 4
# Group n Median_X_num_Data Mean_Y_num_Data
# <chr> <int> <dbl> <dbl>
#1 Group_01 4 26 72.5
#2 Group_02 11 29 69
#3 Group_03 3 8 62
#4 Group_04 12 24 68.5
#sliceを適応:nest_sliceコマンド
TestData %>%
nest_slice(NestData, 2, 8, 9) %>%
#tidyr::unnestコマンドで展開し内容を確認:通常いらない
tidyr::unnest(NestData) %>% head()
# A tibble: 6 x 4
# Group Chr_Data X_num_Data Y_num_Data
# <chr> <chr> <int> <int>
#1 Group_01 * 26 58
#2 Group_02 * 29 56
#3 Group_02 * 22 56
#4 Group_02 * 22 71
#5 Group_03 * 22 59
#6 Group_04 * 6 57
R プロットや画像の複数表示
プロットや画像の複数表示に便利です「multipanelfigure」パッケージ
#パッケージのインストール
install.packages("multipanelfigure")
#パッケージの読み込み
library("multipanelfigure")
###データ例の作成#####
n <- 500
TestData <- data.frame("Group" = sample(paste0("Group", 1:3), n, replace = TRUE),
"Data" = rnorm(n))
########
###プロット例の作成#####
library("ggplot2")
BoxPlot <- function(i = rainbow(16)[sample(1:16, 1)])
{
ggplot(TestData, aes(x = Group, y = Data)) +
geom_boxplot(fill = i)
}
########
#プロット区分を設定:multi_panel_figureコマンド
#各プロット区分の幅:widthオプション
#各プロット区分の高さ:heightオプション
#区分の列数:columnsオプション
#区分の行数:rowsオプション
PlotArea <- multi_panel_figure(width = 150, height = 150,
columns = 3, rows = 3)
#確認
PlotArea
#区分へプロット:fill_panelコマンド
#プロット区分変数とfill_panelコマンドを%<>%で繋ぐのがポイント
for(i in 1:9){
PlotArea %<>% fill_panel(panel = BoxPlot())
}
#確認
PlotArea
###例えばこんな使い方1#####
#プロット区分を設定
PlotArea <- multi_panel_figure(width = 150, height = 150,
columns = 3, rows = 3)
#プロット区分を指定してプロット
#プロット1
PlotArea %<>% fill_panel(panel = BoxPlot(), column = 1:2, row = 1:2)
#プロット2
PlotArea %<>% fill_panel(panel = BoxPlot(), column = 3, row = 1:2)
#プロット3-5
PlotArea %<>% fill_panel(panel = BoxPlot(), column = 1, row = 3)
PlotArea %<>% fill_panel(panel = BoxPlot(), column = 2, row = 3)
PlotArea %<>% fill_panel(panel = BoxPlot(), column = 3, row = 3)
#確認
PlotArea
########