読者です 読者をやめる 読者になる 読者になる

Rスクリプトの実行パスを取得する

R

やりたいこと

Rスクリプトスクリプトファイルが存在しているパスを取得したい。

pythonでいうとこの__file__を実現したい。

もうちょい踏み込んだ説明

なんでかっていうと、コマンドラインインターフェースだけ独立させて存在させたいわけですよ。

私、分析系のスクリプトをしっかり書き上げてシステム的に整えると、どーしてもコマンドライン引数は増えてきます。

で、行数が増えるから、インターフェースだけは分離する。

独立させると、何が困るか?っていうと、source(読み込みたいスクリプトパス)の部分がおかしくなることがあるんですね。

毎回、コマンドラインインターフェース.Rのパスまで移動して実行するならいいけど、それって面倒じゃないですか。

だから、binに通して、別のところから呼び出すと、source(読み込みたいスクリプトパス)が不都合を起こすんですね。

だって、想定しているパスと違うわけですから。

じゃあ、どないするんや?ってわけで解決法です

解決法

コマンドラインインターフェース.Rが存在しているパスを特定させる。

ここに答えがあった。

具体的にはコマンドラインインターフェース.Rにはこんな感じに書きます。

#! /usr/bin/Rscript

initial.options <- commandArgs(trailingOnly = FALSE)
file.arg.name <- "--file="
script.name <- sub(file.arg.name, "", initial.options[grep(file.arg.name, initial.options)])
script.basename <- dirname(script.name)
source(file.path(script.basename, 'main.R'))

script.basenameにはコマンドラインインターフェース.Rが存在してるパスが代入されます。

なので、あとはmain.Rを記述するだけです。

Enjoy!