【R言語】プログラムファイル用のテンプレート(結構使える!)

Rに限らず、プログラムファイルを見ると、いきなりコードを書き始める人もいますが、私は環境設定・データ取得・加工・出力はなるべくまとまりにすべきだと思っています。(そのほうがメンテナンス性が良いと思います。)

ということで、R用テンプレートのメモです。

 

こちらの方法では最初にコンソール、グラフ、グローバルワークスペースをきれいにしています。また、作業ディレクトリを以下の流れで設定しています。

  • バッチ実行でなければ(引数として指定パスを受け取っていなければ)、rstudioapi::getSourceEditorContext()$path にて現在開いているRスクリプトファイルのパスを設定する。
  • バッチ実行なら(引数として指定パスを受け取っているなら)、引数の値を設定する。

 バッチ実行の方法は以下の記事をご覧ください。
【R言語&Javascript】Rスクリプトをバッチ実行する(その1) - こちにぃるの日記(今日もお疲れ様です)
【R言語&Javascript】Rスクリプトをバッチ実行する(その2) - こちにぃるの日記(今日もお疲れ様です)


なお、getSourceEditorContext関数は、RStudioのAPIのため、RStudioのインストールが必要です(RStudioでコードを書くことを前提にしてます)。
Rスクリプトファイルのパスを簡単に取得できるため採用しています。

 

【テンプレートの例】

#===============================================================================
# タイトル :
# 作 成 者 :
# 備    考 :
#===============================================================================
#-------------------------------------------------------------------------------
# 環境設定
#-------------------------------------------------------------------------------
###--- Console クリア
cat("\014")

###--- Plots クリア
if( dev.cur() > 1 ) dev.off()

###--- Global workspace クリア
rm( list = ls( envir = globalenv() ), envir = globalenv() )

###--- Set dir
args <- commandArgs(trailingOnly=TRUE)[1]
if (is.na(args)==TRUE) {
  myPath <- dirname(rstudioapi::getSourceEditorContext()$path)
} else {
  myPath <- args
}
setwd(myPath)
getwd()

###--- library
library(tidyverse)

#-------------------------------------------------------------------------------
# データ取得
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# 実行
#-------------------------------------------------------------------------------

#-------------------------------------------------------------------------------
# End of File
#-------------------------------------------------------------------------------

以上です。

 

参考


rstudio-editors function | R Documentation

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。