当前源文件的完整文件名

时间:2012-11-30 12:18:42

标签: r

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

R中有这样的功能吗?有没有办法让R代码确定它的加载位置?

示例:

main.R:

source("foo.R")

/home/bar/foo.R:

print(FULL_FILENAME)

如何更换FULL_FILENAME以使其打印:

[1] "/home/bar/foo.R"

没有对源代码中的任何文件名进行硬编码?

2 个答案:

答案 0 :(得分:1)

您可以将它放在文件的顶部,暂时使用hack provided by Gabor

this.file <- parent.frame(2)$ofile

如果要提取目录名称,可以执行以下操作:

this.dir <- dirname(this.file)

根据我对事物的理解,采购文件会创建两个父环境。外部(向上两步)包含有关源代码所在文件的信息。

答案 1 :(得分:1)

这是一种更可靠的方法,不依赖于source的实现:

(function() {
    print(getSrcFilename(sys.call(sys.nframe())))
})()