gpt4 book ai didi

r - 使用 sys.frame(1)$ofile 获取脚本名称是一个坏主意吗?

转载 作者:行者123 更新时间:2023-12-01 15:03:15 24 4
gpt4 key购买 nike

我一直在寻找一种获取当前执行脚本的名称的方法。我见过的大多数答案都是以下之一:

  1. 使用 commandArgs() - 但这对我不起作用,因为在 RStudio 中 commandArgs() 不会返回文件路径
  2. 将脚本的名称定义为顶行,然后在脚本的其余部分中使用它

我看到有人提到sys.frames(),并发现我可以使用sys.frame(1)$ofile来获取当前正在执行的文件的名称脚本。我对这类功能不太了解,所以有人可以建议我这是否是一个坏主意或者什么时候它会让我失败?

谢谢

最佳答案

问题在于 R 并不真正将代码作为“脚本”运行。当您“获取”文件时,基本上就像在控制台上重新键入文件的内容一样。异常(exception)的是函数可以跟踪它们的来源。

因此,如果您有一个像 mycode.R 这样的文件

fn <- function(x) {
x + 1 # A comment, kept as part of the source
}

然后你就可以做

source("mycode.R")
getSrcFilename(fn)
# [1] "mycode.R"

因此,为了做到这一点,您只需要知道文件中函数的名称即可。你也可以制作这样的函数

gethisfilename <- function(z) {
x<-eval(match.call()[[1]])
getSrcFilename(x)
}

假设它也在 mycode.R 中,您可以这样做

source("mycode.R")
gethisfilename()
# [1] "mycode.R"

关于r - 使用 sys.frame(1)$ofile 获取脚本名称是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28258685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com