首页 > 解决方案 > 使用 R 包“网状”查找源文件

问题描述

我正在处理一个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项目将非常复杂并且需要多个源(其中一些将写入python

有什么建议么?谢谢!

标签: rdirectorymultilingualreticulate

解决方案


您可以使用该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"

推荐阅读