在许多(解释型)编程语言中,在获取文件时会设置一个变量,以便某些代码可以确定加载文件的文件名。例如,在 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)
无需在源代码中硬编码任何文件名?
您可以使用 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)
根据我的理解,获取文件会创建两个父环境。外部(向上两步)包含有关代码来源的文件的信息。