如何使用knitr从r脚本函数生成多个文件

2023-11-26

我想从 r 脚本生成一些报告。我想避免从 rmd 文件编译时所需的重复,并且如果可能的话,我想从 r 脚本本身生成报告。

该脚本具有一个函数,该函数应该从一系列数据帧生成每个报告,其中每个报告代表一个数据帧的处理。我只是不明白如何单独生成每个报告。目前,报告显示一个文件中的所有数据帧

原始脚本很长,所以我在下面提供了一个最小版本。

    structure(list(a = structure(c(1L, 3L, 2L), .Label = c("boo", 
    "saa", "yaew"), class = "factor"), b = structure(c(2L, 3L, 
    1L), .Label = c("mfds", "shu", "ren"), class = "factor"), c = structure(c(2L, 
    1L, 3L), .Label = c("22", "23", "5345"), class = "factor")), .Names = c("a", 
    "b", "c"), row.names = c(NA, -3L), class = "data.frame")

    ReportOp<-function(n) { 
  this_is_a_name <- n; 
  this_is_my_data <- ldf[[n]] 

  #' ---
  #' author: Me
  #' date:
  #' ---

  #+results='asis', echo=FALSE
  knitr::kable(this_is_my_data, digits = 2)
  #'
} 

目前我只是使用以下命令生成包含其中所有内容的报告compile notebookR 工作室中的按钮。

我尝试使用knitr::spin上面的脚本来自一个单独的文件,如下所示:

library(knitr)
o=spin('/Users/sebastianzeki/Desktop/UntitledTBB.R')
knit2html(o,output="/Users/sebastianzeki/Desktop/out.html")

但我再次只得到一份报告输出而不是三份。


你会做一个rmarkdown参数化报告。在 YAML 中定义参数。您通过将参数传递给来呈现报告rmarkdown::render()在一个列表中。

您可以通过 r、循环、apply家庭 (mapply在这种情况下),dplyr::do, 或者purrr:map()功能。在这个例子中,我使用purrr::pmap().

报告.Rmd

---
title: "`r sprintf('mtcars %s vs. %s', params$variable1, params$variable2)`"
output: html_document
params:
  variable1: "mpg"
  variable2: "cyl"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(ggplot2)
```
#Plot
Crazy report text!

```{r cars}
ggplot(mtcars, aes_(x = as.name(params$variable1), y = as.name(params$variable2))) +
  geom_point()
```

渲染函数

render_report <- function(var1, var2) {

  template <- "path_to/Report.Rmd"

  out_file <- sprintf("report %s vs. %s", var2, var1)

  parameters <- list(variable1 = var1,
                     variable2 = var2)

    rmarkdown::render(template,
                      output_file = out_file,
                      params = parameters)
  invisible(TRUE)
}

运行多个参数。

library(purrr)

params_list <- list(list("mpg","mpg","mpg"),
                    list("drat","wt","qsec"))

pmap(params_list, render_report)

Output

三个html文件,每个文件都以参数命名,每个文件都有根据参数的散点图。

  1. drat vs mpg enter image description here

  2. qsec vs mpg enter image description here

  3. wt vs mpg enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用knitr从r脚本函数生成多个文件 的相关文章

  • 在嵌套 tibbles 上应用 ntile

    我正在尝试申请ntile在一些嵌套的小标题上 但我似乎无法让它工作 你能看出我错在哪里吗 data iris iris gt group by Species gt mutate quintile ntile Petal Length 5
  • 根据不平凡的标准有效合并两个数据帧

    正在接听这个问题 https stackoverflow com questions 18821862 data selection error 18823432 18823432昨晚 我花了一个小时试图找到一个没有增长的解决方案data
  • 删除 R 中具有重复属性的行

    我有一个大数据框 其中包含以下列 ID time OS IP 该数据帧的每一行对应一个条目 在该数据框中对于某些IDs存在多个条目 行 我想删除这些多行 显然 同一 ID 的其他属性会有所不同 或者换句话说 我只想要每个 ID 一个条目 行
  • R 中的转换会导致文档错误

    每当我运行此代码时 tm map 行都会给我警告消息 警告信息 在 tm map SimpleCorpus docs toSpace 中 转换删除文档 texts lt read csv Data fast food Domino s Do
  • R-在多个图的外缘绘制居中图例

    我想在具有多个绘图的设备中的绘图区域之外绘制居中图例 SO 中提出了许多关于更改 R 图中图例位置的问题 略有不同 例如 1 R 组合图的通用标题和图例 https stackoverflow com questions 8736966 r
  • 当测试集中不存在响应变量时,h2o 预测有时会失败

    当在不存在响应变量的测试集上进行预测时 如果在训练中对因子变量使用一种热编码 则 h2o 会以各种不同的方式失败 无论是在训练 GLM 时隐式指定还是在其他方法中显式指定时 R 3 4 0 和 h2o 3 12 0 1 中存在此错误 我们还
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • 有没有一种简单的方法可以根据多个标准进行排名,从而保留 R 中的联系?

    当单个标准排序良好时 rank 函数会返回明显的结果 rank c 2 4 1 3 5 1 2 4 1 3 5 当单个标准具有联系时 排名函数 默认情况下 将平均排名分配给联系 rank c 2 4 1 1 5 1 3 0 4 0 1 5
  • 在 mutate 和 across 之后使用 ~separate

    目的是将所有物种 setosa 行转换为一行 setosa 这是一个最小的示例 实际上有更多列和更多组 我有这个数据框 head iris 2 gt select 1 2 5 gt group by Species Sepal Length
  • 使用 data.table 进行分组并选择最短日期

    My Data df1 lt structure list ID c A A A B B C c1 1 6 c2 1 6 myDate c 01 01 2015 02 02 2014 03 01 2014 09 09 2009 10 10
  • R:编写抛硬币的随机采样程序

    假设我们有以下情况 有一枚硬币 如果它正面朝上 那么下一次抛掷正面的概率是 0 6 如果是反面 那么下一次抛掷反面的概率也是 0 6 一个班有100名学生 每个学生随机抛掷硬币几次 Student n 的最后一次抛硬币不会影响 Studen
  • 从向量中删除元素在 R 中出现的时间量

    我想从一个向量中删除元素在另一个向量中出现的时间 就像我要减去它们一样 鉴于我想要删除的元素向量中的每个元素也存在于我想要从中删除的主向量中 a lt c A B B C C C b lt c A B C C a a in b return
  • jupyter 中的 r 图形 - 无法启动 png() 设备

    我在 Jupyter 中使用 R 但无法在笔记本本身中绘制图表 这是一个可重现的示例 set seed 123 mat as matrix x rnorm 100 y rnorm 100 plot mat 在朱皮特中 Error in pn
  • R texreg:如何选择要显示的 gof 统计信息?

    我正在使用 texreg 通过 plm 生成面板回归的输出表 我想抑制所有 gof 统计数据的输出 这不是显示 R2 adj R2 和 N 我只想显示 adj R2 有谁知道一个简单的方法来做到这一点 好吧 这实际上很简单 只需在调用中包含
  • 如何从R中的日期中提取月份

    我正在使用lubridate封装并应用month从日期中提取月份的函数 我在日期字段上运行了 str 命令 得到了 Factor w 9498 levels 01 01 1979 01 01 1980 5305 1 1 1 1 1 1 1
  • 访问 R 工作区中的数据[重复]

    这个问题在这里已经有答案了 我是自学 R 的 可能有一些非常基本的东西我可能不熟悉 如果是这样我道歉 我正在尝试访问外部来源提供给我的数据 它作为一个工作空间出现 我的流程如下 gt ls 1 2003OHT HR gt attach 20
  • 如何使用 sprintf 函数在字符中添加前导“0”而不是空格?

    我正在尝试使用sprintf函数为字符添加前导 0 并使所有字符长度相同 然而我得到的是领先空间 My code a lt c 12 123 1234 sprintf 04s a 1 12 123 1234 我试图得到什么 1 0012 0
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph

随机推荐

  • 如何通过 Telegram Bot 发送文件

    我需要使用 TelegramBot API 发送 txt 文件 我已经尝试过了 并有问题 ok false error code 400 description 错误请求 错误的远程 指定的文件 ID 字符串长度错误 为了完成唐尼的回答 我
  • 查询中的问号运算符

    在我的 laravel 5 应用程序中 我使用 PostgreSQL 的 jsonb 数据类型 它有 操作员 但我无法让它在我的模型中工作 因为 laravel 使用问号作为绑定 具体来说 在 whereRaw 方法中 query gt w
  • Idea 中不显示字体

    更新 jrk7 openjdk 和 jre7 openjdk 字体后 Idea 中不显示字体 重新安装软件包 openjdk 和 idea 没有帮助 名称 a Linux ftp27host 3 14 6 1 ARCH 1 SMP PREE
  • 使用 pip 安装 uwsgi 时出现“ascii”编解码器无法解码错误

    我正在按照本教程设置 uwsgi https uwsgi readthedocs org en latest tutorials Django and nginx html I run pip install uwsgi在virtualen
  • Visual Studio - 用资源替换硬编码字符串的工具

    我有一个大型 ASP NET 项目 其中充满了硬编码字符串 现在必须将其提取到资源中 此类字符串几乎可以在任何地方找到 cs 文件 aspx 文件 ascx 文件等 并且文件数量巨大 我正在寻找一种工具 或任何方式 来一次找到所有这些硬编码
  • 从内存流读取存储的 PDF

    我正在使用 C 和 SQLServer 2012 开发一个数据库项目 在我的一个表单中 我有一个 PDF 文件 其中包含存储在表中的一些其他信息 这是成功的 但是当我想检索存储的信息时 我在显示 PDF 文件时遇到问题 因为我无法显示它 而
  • 具有多个数据库/DbContext 的 EF Code First 迁移

    我有两个数据库 每个数据库都有自己的 dbcontext 我设置了两个迁移配置 我可以为第一个数据库添加迁移 这很好 Add Migration DB1 InitialCreate ConfigurationTypeName DB1Conf
  • 使用 Jenkins Job-DSL 配置块将自定义步骤放置在特定位置

    我正在尝试使用 job dsl plugin 编写之前手动配置的大量 Jenkins 作业的配置脚本 这些作业的一种风格有多个步骤 其中包括使用 XShell 插件的几个步骤 job dsl 不直接支持这一点 不过 我应该能够通过使用自定义
  • 编写一个识别声音并执行操作的程序

    我想编写一个能够存储声音模式的程序 例如火车汽笛 喇叭 嘟嘟声 通过麦克风收听声音 然后在听到声音时采取一些行动 我懂一点Python 很早以前就用VB 编程过 我主要是一个 Oracle PLSQL 人员 该程序需要一个适度的用户界面 解
  • 消息通道是一个还是多个?

    我需要处理来自大约 30 个地址的电子邮件 我以一种将所有电子邮件发送到一个的方式来实现这一点DirectChannel之后到Receiver In Receiver我可以了解消息来自哪个地址 为此我创建了CustomMessageSour
  • jasperreport 5.0.1需要添加哪些依赖?

    I 升级jasper报告版本 from 4 5 0 至 5 1 0 当我安装插件时 它会抛出错误 例如缺少某些依赖项 我想使用 Maven 配置 JasperReports 5 1 0 Execution default of goal o
  • 安全 REST API,无需用户身份验证(无凭据)

    我已经为如何在没有用户身份验证的情况下保护 REST API 的安全而苦苦挣扎了 2 天 这是什么意思 在我的 AngularJS 应用程序中 我通过向我必须使用的现有服务 companydomain userinfo 发送 GET 请求来
  • Rails 路由 - 资源的自定义路由

    我目前正在构建一个 Rails 应用程序 我想坚持使用所有这些奇特的东西 例如 REST 和资源 但我想稍微自定义一下我的路线 我希望我的 GET 路线更加详细 我正在创建的应用程序是一个简单的博客 所以而不是GET posts 1我更喜欢
  • 在 CodeIgniter 中处理数据库错误的最佳实践

    我有一个带有唯一键的表 date userid 在我的网络应用程序数据库中 当我尝试插入现有记录时date and userid我收到以下错误 dupicate key in table 我在应用程序配置中打开了数据库调试器 因为我需要使用
  • 交错网格布局管理器动态列数

    我如何使动态列数RecyclerView using StaggeredGridLayoutManager 我已经有工作了RecyclerView 这是我需要做的屏幕 如果最大列是两个 那就很简单了 对于占据整个宽度的视图 setFullS
  • 将字符串的第一个字母大写,而不接触其他字母

    我想将字符串的第一个字母大写 但保留其余字母 我拥有的 赛车 我想要的是 赛车 然后只需将第一个字母大写str upper 并连接其余部分不变 string 0 upper string 1 Demo gt gt gt string rac
  • 测试 SQL 连接字符串可用性的最有效方法

    我有这段代码 我试图让它测试 SQL 字符串连接 但我不知道如何处理该部分connection Open true你能帮我解决这个问题吗 非常感谢您的参与 private void button1 Click object sender E
  • 使用 tcltk 在 R 脚本中添加弹出文本框

    我有一个很长的脚本来进行一些数据分析 它必须连接到多个数据库 其中一个数据库更新密码的频率往往比我想要的要高 因此我想添加一个弹出框供我输入当前密码 我找到了这个示例 但不了解足够的 tcltk 来查看当对话框关闭时 hwo 返回我的值 我
  • Rust 中的英文字母作为字符向量

    标题说明了一切 我想将字母表生成为字符向量 我确实考虑过简单地创建 97 122 的范围并将其转换为字符 但我希望有一种更好看的方式 例如 Python 的string ascii lower 生成的向量或字符串应包含字符 a z 对这类事
  • 如何使用knitr从r脚本函数生成多个文件

    我想从 r 脚本生成一些报告 我想避免从 rmd 文件编译时所需的重复 并且如果可能的话 我想从 r 脚本本身生成报告 该脚本具有一个函数 该函数应该从一系列数据帧生成每个报告 其中每个报告代表一个数据帧的处理 我只是不明白如何单独生成每个