相关疑难解决方法(0)

如何像源代码('myfile.r')那样获取R Markdown文件?

我经常有一个主R Markdown文件或knitr LaTeX文件,其中我source有一些其他R文件(例如,用于数据处理).但是,我认为在某些情况下,将这些源文件作为自己的可再现文档(例如,R Markdown文件不仅包括用于数据处理的命令,而且还生成可重复的文档来解释数据处理将是有益的.决定).

因此,我想source('myfile.rmd')在我的主R Markdown文件中有一个命令.这将提取和源代码的R代码块内的所有R代码myfile.rmd.当然,这会引起错误.

以下命令有效:

```{r message=FALSE, results='hide'}
knit('myfile.rmd', tangle=TRUE)
source('myfile.R')
```
Run Code Online (Sandbox Code Playgroud)

results='hide'如果需要输出,可以省略.即,从knitr输出的R代码myfile.rmdmyfile.R.

但是,它似乎并不完美:

  • 它导致创建一个额外的文件
  • 如果需要控制显示,它需要出现在它自己的代码块中.
  • 它并不像简单那么优雅source(...).

因此我的问题: 是否有更优雅的方式来获取R Markdown文件的R代码?

markdown r knitr

74
推荐指数
3
解决办法
3万
查看次数

模块化R降价结构

有一些问题已经存在,但它们要么不清楚,要么提供无效的解决方案,可能是因为它们已经过时了:

用于大型项目的模块化代码结构

R Markdown/Notebook很不错,但就其呈现方式而言,通常只有一个文件包含所有文本和所有代码块.我经常有一些项目,这样的单一文件结构不是一个好的设置.相反,我使用单个.R.R文件按顺序加载其他文件.我想使用R Notebook复制这个结构,即我有一个.Rmd文件,我从多个.R文件中调用代码.

以这种方式使用项目的好处是,它允许使用.R文件的RStudio进行良好的正常工作流程,但也可以使用R Notebook/Markdown的简洁输出而无需复制代码.

最小的例子

这被简化以使示例尽可能小.两个.R文件和一个主.Rmd文件.

start.R

# libs --------------------------------------------------------------------
library(pacman)
p_load(dplyr, ggplot2)
#normally load a lot of packages here

# data --------------------------------------------------------------------
d = iris
#use iris for example, but normally would load data from file

# data manipulation tasks -------------------------------------------------
#some code here to extract useful info from the data
setosa = dplyr::filter(d, Species == "setosa")
Run Code Online (Sandbox Code Playgroud)

plot.R …

r r-markdown rnotebook

7
推荐指数
1
解决办法
1266
查看次数

标签 统计

r ×2

knitr ×1

markdown ×1

r-markdown ×1

rnotebook ×1