使用R包“网状”查找源文件

时间:2019-07-22 19:05:23

标签: r directory multilingual reticulate

我正在一个有几个文件夹的R项目中。工作目录是主脚本和名为src的文件夹所在的位置。该文件夹包含两个python脚本,一个叫做test_function.py,另一个叫做test_script.py

我在主脚本中使用了reticulate包,并且尝试使用函数source_python( )来调用python脚本。代码如下:

# Main R script
library(reticulate)
source_python("test_function.py")

但是,出现以下错误

  

py_run_file_impl(文件,本地,转换)中的错误:     无法打开文件“ test_func.py”(是否存在?)

现在,工作目录如下所示:

setwd("C:/Users/.../testProject")

函数source_python( )仅在我移至python脚本所在的位置时起作用

setwd("C:/Users/.../testProject/src")

但是,我需要从主R脚本所在的目录中使它起作用,因为R项目将非常复杂,并且需要多个源(其中一些源代码为{ {1}})

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用scriptName软件包。示例:

脚本文件“〜/ Desktop / temp.r”:

library(scriptName)
library(reticulate)
x <- scriptName::current_filename()
print(dirname(x))
source_python(paste0(dirname(x), "/src/test_function.py"))

source("~/Desktop/temp.r")输出:

[1] "script path is: "
[1] "/Users/thc/Desktop"