有一些问题已经存在,但它们要么不清楚,要么提供无效的解决方案,可能是因为它们已经过时了:
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脚本,这将是调用一个简单的问题source在data_setup.R里面analysis.R,但我想记录我在Rmarkdown文档中做出的数据设置和分析决策.所以我尝试写一些排序的source_rmd功能,让我从源代码data_setup.Rmd到analysis.Rmd.
如何获取R markdown文件的答案,如`source('myfile.r')`?如果有任何重复的块名称(由于命名的块setup在Rstudio的笔记本处理中具有特殊行为,因此无法解决).如何将两个RMarkdown(.Rmd)文件合并为一个输出?想要整合整个文档,而不仅仅是一个代码,还需要唯一的块名称.我已经尝试使用knit_expand建议在生成动态[R降价块,但我的名字在双大括号的变量块,而且我真的很喜欢的方式,使这个方便我colaborators使用为好.并knit_child按照如何嵌套编织调用中的建议使用以修复重复的块标签错误?仍然给我重复的标签错误.
很明显,我正在编写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 …Run Code Online (Sandbox Code Playgroud) 我已经在源 Rmd 文件中运行了分析,并且希望仅使用源中的几个块从最终 Rmd 文件编织一个干净的版本。我已经在另一个 Rmd 中的 Rmd 文件的源代码中看到了一些关于从源 Rmd 中提取所有块的答案,以及如何获取 R Markdown 文件(如“source('myfile.r')”)?。我对这些帖子有同样的担忧,因为我不想移植一个单独的 .R 文件,这似乎是唯一read_chunk可行的方法。
我想我现在可以导入源 Rmd,但现在我不确定如何在最终的 Rmd 中调用它的特定块。这是一个可重现的示例:
源代码.Rmd
---
title: "Source Code"
output:
pdf_document:
latex_engine: xelatex
---
```{r}
# Load libraries
library(knitr) # Create tables
library(kableExtra) # Table formatting
# Create a dataframe
df <- data.frame(x = 1:10,
y = 11:20,
z = 21:30)
```
Run Code Online (Sandbox Code Playgroud)
一些解释性文字
```{r table1}
# Potentially big block of stuff I don't want to have …Run Code Online (Sandbox Code Playgroud) 我一直在阅读关于R Markdown(这里,这里,这里)并使用它来创建可靠的报告.我想尝试使用我正在运行的小代码进行一些临时分析,并将它们转换为更具伸缩性的数据报告.
我的问题相当广泛:是否有适当的方法来围绕R Markdown项目组织代码?比方说,有一个生成所有数据结构的脚本?
例如:假设我有cars数据集,并且我已经在制造商处引入了商业数据.如果我想将制造商附加到当前cars数据集,然后使用操纵数据集为每个公司生成单独的汇总表cars.by.name以及使用某个样本绘制图表,该cars.import怎么办?
编辑:现在我打开了两个文件.一个是具有所有数据操作的R脚本文件:子集化和重新分类值.另一个是R Markdown文件,我正在构建文本以配合各种感兴趣的表格和图表.当我从R脚本文件中调用一个对象时 - 比如:
```{r}
table(cars.by.name$make)
```
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说 Error in summary(cars.by.name$make) : object 'cars.by.name' not found
编辑2:我发现这个较旧的帖子很有帮助.链接
---
title: "Untitled"
author: "Jeb"
date: "August 4, 2015"
output: html_document
---
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. …Run Code Online (Sandbox Code Playgroud)