pythonでいうところの
python print(__file__)
やsys.argv()の0番目みたいに実行している自身のソース名を取得する方法がRにもあるはずと思ったら、単純な関数では用意されてなかったのでやり方備忘メモ
get_this_filename <- function(){
tmp_fn <- sys.calls()[[1]]
fn <- as.character(tmp_fn)[2]
# Rscript で実行した場合はsys.calls()で取れないので
# commandArgs()で拾える情報を利用
if(is.na(fn)){
fn <- commandArgs()
idx_file <- grep(pattern = '--file=', fn)
fn <- gsub('--file=', '', fn[idx_file])
fn <- gsub('\\./', '', fn)
fn <- paste0('~/', basename(getwd()), '/', fn)
}
return(fn)
}
これをGlobal envレベルで実行すればOKでした
※ターミナルからRscriptで実行した場合、自己ファイル名が取れないことがわかったので、if()の処理を追加しました