4

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

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

例子:

主.R:

source("foo.R")

/home/bar/foo.R:

print(FULL_FILENAME)

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

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

没有硬编码源中的任何文件名?

4

2 回答 2

1

您可以通过将其放在文件顶部来使用Gabor 提供的 hack :

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

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

this.dir <- dirname(this.file)

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

于 2012-11-30T12:26:33.207 回答
1

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

(function() {
    print(getSrcFilename(sys.call(sys.nframe())))
})()
于 2016-02-19T18:22:20.987 回答