我正在用 R 编写一个单元测试,它需要读取同一目录中定义的一些测试数据。但我也希望能够运行该单元测试,无论当前工作目录是什么。
有没有办法告诉 R 从这里加载文件,其中这里被定义为保存正在执行的函数的源文件的目录?
最佳答案
取决于您对“我正在编写单元测试”的含义。如果您只是从任何地方获取该函数,大卫是对的,我什至认为没有必要这样做,因为您知道它在哪个目录。
我会将该函数包含在一个包中,然后 R 中的机制允许您使数据可用于加载或通过延迟加载。请参阅手册 Writing R Extensions 中的第 1.1.5 节(包中的数据) 。这是 R 方法。
Gabor Grothendieck 给出的另一个选项 this thread在 R 邮件列表上,是在脚本顶部添加以下行:
this.dir <- dirname(parent.frame(2)$ofile)
这将给出使用 source()
获取文件时的目录。 Gabor 称这是一种肮脏的黑客行为,我同意他的观点。
顺便说一句,还请检查以下 R 中的单元测试包:
关于unit-testing - 在 R 中,有没有办法知道定义给定函数的源文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5192693/