R設定ファイル(.Rprofile)とは

R設定ファイル(.Rprofile)は、Rを起動するときに毎回自動で実行されるスクリプト。 時刻・地域やフォントの設定のほか,よく使う自作関数などもこれに記入しておくと便利。

起動されたRは、次の順でR設定ファイル(.Rprofile)を探索するので、いずれかのディレクトリ下に保存する。

  1. Rがインストールされているディレクトリ(R_HOME)
Sys.getenv('R_HOME')
## [1] "C:/PROGRA~1/R/R-43~1.2"
R.home()
## [1] "C:/PROGRA~1/R/R-43~1.2"
  1. Rユーザー(R_USER)のホームディレクトリ
Sys.getenv('R_USER')
## [1] "C:/Users/tkdhs/OneDrive/Documents"
Sys.getenv('HOME')
## [1] "C:\\Users\\tkdhs\\OneDrive\\Documents"
  1. 作業ディレクトリ
getwd()
## [1] "C:/Users/tkdhs/0_tkd/1_hss/TIU/01_ds/05_R/第01回ー統計解析環境の導入/R"

Rのスタートアップの詳細については「?Startup」コマンドでヘルプページを閲覧できる。

R設定ファイル(.Rprofile)の作成方法

上記ディレクトリ下にファイル名「.Rprofile」の テキストファイルを作成し、次のRスクリプト(グレーの範囲)をコピペして保存する。

#
# R デフォルト設定ファイル(.Rprofile)
#
# 「.Rprofile」ファイルにはR起動時に自動実行するコードを記入します。
# 時刻・地域やフォントの設定のほか,よく使う自作関数などもこれに記入しておくと便利。
# Rユーザーのホームディレクトリに作成,保存します。
#
# 【.Rprofileファイルの作成手順】
# (事前準備)はじめにRStudio画面のボタン名称を表示させるためにアプリ画面をできるだけ大きくしておく。
# 1. RStudioの右下の画面(pane)の「Files」タブで「Home」を押しホームディレクトリに移動する。
#   (Windows:C:Users/(ユーザー名)/Documentsがホーム)
# 2. 「New Blanck File」のプルダウンメニューで「Text File」を押して空のテキストファイルを作成する。
# 3. ファイル名を「.Rprofile」(ドットアールプロファイル)にする。
# 4. 以下のテキストを全コピーして空のテキストファイルに貼り付けて保存する。
#
# 【フォント】
# Myrica (ミリカ)は,フリーなプログラミング用 TrueType フォントです。
# (macOSX) brew install --cask font-myrica font-myricam
#
# UD Digi Kyokasho NK-R(UD デジタル 教科書体 NK-R)は,
# 美しさに定評のあるモリサワ社のフォントです。
#
#【フォントファミリ】
#
# library(systemfonts)
# system_fonts()$family で利用できるフォントファミリを表示できる。
#
# 2023-04-11 竹田



#
# グラフの文字のデフォルト表示設定
#
setHook(packageEvent("grDevices", "onLoad"),
        function(...)
        {
          cat("OS:", .Platform$OS.type, fill = T)
          
          # Windows はここでフォントを設定する。
          if (.Platform$OS.type == "windows")
          {
            # 日本語フォントは英字の正式名で設定する
            grDevices::windowsFonts(
              #sans  = "MyricaM M",
              #serif = "MyricaM M",
              #mono  = "MyricaM M")
              sans  = "UD Digi Kyokasho NK-R",
              serif = "UD Digi Kyokasho NK-R",
              mono  = "UD Digi Kyokasho NK-R")
          }
          
          # macOSX はここでフォントを設定する。
          if (capabilities("aqua"))
          {
            grDevices::quartzFonts(
                sans =grDevices::quartzFont(
                  c("Hiragino Kaku Gothic Pro W3",
                    "Hiragino Kaku Gothic Pro W6",
                    "Hiragino Kaku Gothic Pro W3",
                    "Hiragino Kaku Gothic Pro W6")),
                serif=grDevices::quartzFont(
                  c("Hiragino Mincho Pro W3",
                    "Hiragino Mincho Pro W6",
                    "Hiragino Mincho Pro W3",
                    "Hiragino Mincho Pro W6")))
              #sans  = grDevices::quartzFont(rep('UD Digi Kyokasho NK-R', 4)),
              #serif = grDevices::quartzFont(rep('UD Digi Kyokasho NK-R', 4)))
              #sans =grDevices::quartzFont(rep('MyricaM M', 4)),
              #serif =grDevices::quartzFont(rep('MyricaM M', 4)))
          }
          grDevices::pdf.options(family = "Japan1GothicBBB")
          grDevices::ps.options(family = "Japan1GothicBBB")
        }
)

attach(NULL, name = "JapanEnv")

assign("familyset_hook",
       function()
       {
         winfontdevs = c("windows","win.metafile",
                         "png","bmp","jpeg","tiff","RStudioGD")
         macfontdevs = c("quartz","quartz_off_screen","RStudioGD")
         devname = strsplit(names(dev.cur()),":")[[1L]][1]
         if ((.Platform$OS.type == "windows") && (devname %in% winfontdevs))
           par(family = "sans")
         if (capabilities("aqua") && devname %in% macfontdevs)
           par(family = "sans")
       },
       pos = "JapanEnv")

setHook("plot.new", get("familyset_hook", pos = "JapanEnv"))
setHook("persp",    get("familyset_hook", pos = "JapanEnv"))

# PCで利用可能なフォント一覧表示
#library(systemfonts)
#system_fonts()$family
#
#次のコマンドでも文字化け対応できる。
#par(family = 'MyricaM P')

#
# システムロケール(posit.cloudなど海外クラウド環境利用時に必要な時間と言語の設定)
#
cat('システムロケール:')
Sys.setlocale("LC_TIME", "ja_JP.UTF-8")

#
# 作業ディレクトリの表示
#
cat('作業ディレクトリ:')
getwd()


#
# 自作関数
#

# RMSE
get.RMSE <- function(yhat, y) sqrt(mean((yhat - y)^2))