当前来源文件的完整文件名

lit*_*ith 6 r

在许多(解释型)编程语言中,在获取文件时会设置一个变量,以便某些代码可以确定加载文件的文件名。例如,在 ruby​​ 中,该变量__FILE__是在加载文件时设置的。

R中有这样的功能吗?R 代码有没有办法确定它从哪里加载?

例子:

主要.R:

source("foo.R")
Run Code Online (Sandbox Code Playgroud)

/home/bar/foo.R:

print(FULL_FILENAME)
Run Code Online (Sandbox Code Playgroud)

我必须用什么替换 FULL_FILENAME 才能打印:

[1] "/home/bar/foo.R"
Run Code Online (Sandbox Code Playgroud)

无需在源代码中硬编码任何文件名?

Jor*_*eys 2

您可以使用 Gabor不久前提供的hack ,将其放在您的文件顶部:

this.file <- parent.frame(2)$ofile
Run Code Online (Sandbox Code Playgroud)

如果你想提取目录的名称,你可以这样做:

this.dir <- dirname(this.file)
Run Code Online (Sandbox Code Playgroud)

根据我的理解,获取文件会创建两个父环境。外部(向上两步)包含有关代码来源的文件的信息。