bam*_*phe 5 r knitr r-markdown
很明显,我正在编写Rmd带有一些R代码块的报告。我的代码结构如下:
functions.R自定义功能的脚本DataDependency.R用于加载软件包和我的数据的脚本,这已经functions.R正是这些任务的来源analysis.R脚本采购DataDependency.Rfurtheranalyis.R采购analysis.R,从那时起,我不必多次编写一些步骤因此,我在很大程度上取决于以嵌套方式获取文件的功能。但是,我无法做到这一点,RMarkdown每次都会给我带来错误(请参阅下文)。我太傻了还是缺少此功能?到目前为止,所有尝试均导致错误。
我看到关于该主题的其他问题,只包括采购的.Rmd内部.Rmd文件(这里)之间的区别source(),并read_chunk()(在这里)。两者都没有回答我的问题。
我已经尝试确保产生错误的确实是嵌套资源。因此,这是一个最小的工作示例:
文件 mweA.R
x = 1:10
Run Code Online (Sandbox Code Playgroud)
和文件 mweB.R
source("./mweA.R")
y = x * x
Run Code Online (Sandbox Code Playgroud)
现在,在我的.Rmd文件中,我只想加载文件B(或者必须加载两个文件),然后继续:
```{r}
source("./mweB.R")
plot(y ~ x)
```
Run Code Online (Sandbox Code Playgroud)
即使我这样做:
```{r}
source("./mweA.R")
source("./mweB.R")
plot(y ~ x)
```
Run Code Online (Sandbox Code Playgroud)
发生相同的错误,即:
Error in file(filename, "r", encoding = encoding) : cannot open the connection Calls: <Anonymous> ... source -> withVisible -> eval -> source -> file Execution halted
Run Code Online (Sandbox Code Playgroud)
请注意,如果我只是执行source("./mweA.R")或获取任何其他非依赖R脚本,则不会出错。
希望在解决所有这些问题的块中必须指定一个(或多或少)秘密参数。我对Rmarkdown的代码块确实很困难,而且对我来说,常常不清楚错误是什么。这主要是阻止我从切换latex到RMarkdown...
你面对的不相关的问题,knitr或者能够正确地嵌套的文件,但不是R项目的产物“工作目录疯狂”一个面孔作为
rmarkdown意志相对于文档针织文件目录而不是在项目的根。根据文档是在项目会话中运行还是在会话中,这导致不同的相对路径knitr。
除了要点之外,此问题还显示了许多解决方法:
针织物特定:
为要评估的所有块设置一个根目录,而不是相对于文档位置。
opts_knit$set(root.dir = '/Users/username/path_to_project')
Run Code Online (Sandbox Code Playgroud)
一般情况:
使用rprojroot或here(后者是前者的包装),后者使用多个条件来确定文件的顶级目录。您无需使用RStudio项目即可工作。
调用任何对另一个本地文件的引用都将使用here::here它解析到相同的位置,而不管调用该文件的子目录如何。
source(here("functions.R"))
source(here("subdirectory", "DataDependency.R"))
source(here("subdirectory2", "furtheranalyis.R"))
Run Code Online (Sandbox Code Playgroud)
这可能是更好的解决方案,因为它不依赖knitr选项。或者,您可以root.dir使用rprojroot以下命令设置块:
opts_knit$set(root.dir = rprojroot::find_rstudio_root_file())
Run Code Online (Sandbox Code Playgroud)
如果您正在使用RStudio项目。如果不是,请使用rprojroot::find_root指定的条件。
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |