我无法将文件源到Rmd文件中。
我以前有源文件,无法弄清楚为什么这个文件不起作用。我的工作目录设置为正确的位置。我有一个名为projects的文件,其中有“ index.Rmd”文件,然后有一个包含包含“ chart_1.R”的文件夹“ scripts”。
所以我的工作流程将是项目->脚本。在项目中,我具有index.Rmd,在脚本中,我具有chart_1.R
source("scripts/chart_1.R")
我应该可以访问chart_1文件,但不能。
它给我错误“文件(文件,“ rt”)中的错误:无法打开连接”
答案 0 :(得分:0)
2个解决方案...
首选解决方案
您是否尝试过here
包裹?它只是为这样的事情而做的,它可能会解决问题。您的解决方案如下所示:
install.packages("here")
.here
文件夹中添加一个名为projects
的空白文件来定义“这里”的含义。source(here::here("scripts", "chart_1.R"))
或者,
library(here)
source(here("scripts", "chart_1.R"))
here
的工作原理与file.path
相似,因为它会生成文件路径。但是,根据docs中阐明的规则,它总是从您的基本目录开始。
对于您的特定问题,这也许算是过高了,但这是一个很棒的软件包,值得一试。它避免了使用绝对路径,如果其他人曾经下载projects
文件夹来检查您的操作,则会使代码的再现性降低。
解决方法
至少在与选项knitr
一起使用时,current_input
函数.Rmd
可以为您提供dir = TRUE
文件的位置。 basename
将使您从文件路径转到包含文件夹的位置。因此,您可以尝试以下解决方法:
source(file.path(basename(knitr::current_input(dir = TRUE)), "scripts", "chart_1.R"))