r - 将代码传递给 Rmarkdown 渲染函数的输入而不是文件

标签 r plot ggplot2 knitr r-markdown

我有一个工作流程 Rmarkdownrender这感觉远非最佳。这是我目前正在做的事情。

我有一个 .R我的环境中可能已经有几百行代码和几十个对象的脚本。在脚本接近或结束时,我想使用 render使用当前环境中的对象生成一些 HTML 输出。为了实现这一点,我保存了感兴趣的对象并将它们重新加载到我传递给 render 的脚本中。同时要注意工作目录以及项目相对于我将用于呈现 html 文档的脚本的位置。

这是我当前工作流程的可重现示例以及我想做的示例。

# Imagine I have a local data.frame/object I am interested in plotting to html via render
iris_revised <- iris

# My current workflow is to save this object
save(iris_revised, file = 'data/iris_revised.Rdata')

# And then call another script via the render function
rmarkdown::render('R/plot_iris_revised.R', output_format = 'html_document')

哪里R/plot_iris_revised.R包含以下代码。
library(ggplot2)
load('../data/iris_revised.Rdata')

for(Species in levels(iris_revised$Species)){
    cat('#', Species, '\n')
    p <- ggplot(iris_revised[iris_revised$Species == Species,], aes(x = 
Sepal.Length, y = Sepal.Width)) +
        geom_point()
    print(p)
}

理想情况下,我可以使用用户 render 而不是调用不同脚本的额外开销。直接在我当前脚本的末尾,类似于下面的代码(显然不起作用)。
# Ideally I could just do something like this, where I could just render html in the same workflow
input_text <- "
for(Species in levels(iris_revised$Species)){
    cat('#', Species, '\n')
    p <- ggplot(iris_revised[iris_revised$Species == Species,], aes(x = 
Sepal.Length, y = Sepal.Width)) +
        geom_point()
    print(p)
}
"
rmarkdown::render(input_text, output_format = 'html_document')

我正在寻找解决方案 没有 改原版.R.Rmd或 R 笔记本。

除了我上面介绍的理想功能之外,我对如何在 .R 的末尾轻松呈现一些 Rmarkdown 输出的一般工作流程建议持开放态度。脚本。

最佳答案

input参数指的是一个输入文件,你可以写 input_text到(可能是临时的)文件:

tmp <- tempfile(fileext = ".R")
cat(input_text, file = tmp)
rmarkdown::render(tmp, output_format = "html_document", output_dir = getwd())

关于r - 将代码传递给 Rmarkdown 渲染函数的输入而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370425/

相关文章:

r - 计算重复R代码的出现次数

r - 使用 ggplot2 中的标签更改 facet_wrap 标签

r - 如何更改绘图第二个主标题行的字体大小

r - ggplot 图上的衰退阴影

r - plotly 线性趋势线不更新 Shiny

r - 从拟合的 lm 或 glm [R] 获取每个因子水平(以及交互作用)的数据数量

r - 如何修复 R markdown 中的 Kable 表错误?

matlab - 如何在 Matlab 绘图中为某些 x 值切除部分 y Axis

r - 在 ggplot2 中绘制白天(无日期)

r - 在ggplot2中的箭头中添加注释文本