Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Rmarkdown中的多个pdf上运行不同的图形

在Rmarkdown中的多个pdf上运行不同的图形
EN

Stack Overflow用户
提问于 2019-10-02 13:56:19
回答 1查看 29关注 0票数 1

我想产生多个图形,并将它们保存在多个pdf文件基础上。基于某个类别,这些图表是不同的。使用此代码,它可以在生成1个pdf文件时工作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
output: pdf_document
---

```{r setup, include=FALSE}  

I <- "30-40“

套餐

库(Tidyverse)

库(Knitr)

库(Rmarkdown)

库(Tinytex)

库(Readxl)

库(data.table)

库(Lubridate)

创建随机数据

ID <- sample(seq(from = 1,to = 20,by = 1),100,replace = TRUE)

Date <- sample(seq(ymd("2019-01-01"),today(),by="day"),100,replace =TRUE

年龄<-样本(c(“20”,"20-30","30-40","40-50","50-60","60-70","70+"),

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                    size = 100, 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                    replace = TRUE, 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                    prob=c(0.05, 0.1, 0.075, 0.15, 0.2, 0.175, 0.25))

Duration_call <-样本(序号(from= 30,to = 600,by = 5),100,replace = TRUE)

问题<-示例(c(“Question1”,"Question2","Question3","Question4"),100,replace = TRUE)

sample_data <- tibble(ID,日期,年龄,Duration_call,问题)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
```{r}

KPI_3 <- sample_data %>%

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   filter(Age == i) %>%
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   mutate(Maand = lubridate::day(Date)) %>%
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   group_by(Maand, Question) %>%
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   summarize(Aantal_calls = n()) %>%
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   ggplot(aes(Maand, Aantal_calls, group = Question, color = Question)) +
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   geom_line()
代码语言:javascript
代码运行次数:0
运行
复制

但是,如果我使用这个脚本来遍历不同的类别(从而产生不同的pdf文件),它将无法工作。注意:在使用摘要统计信息(并将其缩进到rmd文件中)时,可以使用完全相同的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Packages
library(tidyverse)
library(knitr)
library(rmarkdown)
library(tinytex)
library(readxl)
library(data.table)


# Create random data 
ID            <- sample(seq(from = 1, to = 20, by = 1),  100, replace = TRUE)
Date          <- sample(seq(ymd("2019-01-01"), today(), by="day"), 100, replace = TRUE)
Age           <- sample(c("20", "20-30", "30-40", "40-50", "50-60", "60-70", "70+"), 
                        size = 100, 
                        replace = TRUE, 
                        prob=c(0.05, 0.1, 0.075, 0.15, 0.2, 0.175, 0.25))
Duration_call <- sample(seq(from = 30, to = 600, by = 5),  100, replace = TRUE) 
Question      <- sample(c("Question1", "Question2", "Question3", "Question4"), 100, replace = TRUE)


sample_data <- tibble(ID, Date, Age, Duration_call, Question)



# For loop
for (i in unique(sample_data$Age)) {

  print(i)

  rmarkdown::render(input = "Child_script_1.Rmd", # must match RMD 
                    output_format = "pdf_document",
                    output_file = paste("Age", i, ".pdf", sep=''), 
                    output_dir = "MAP")
}

有人有什么建议吗?任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2019-10-02 14:25:27

如果我理解正确的话,您需要在您的markdown YAML文档中设置参数:

在本例中,它采用从输出创建的生成的图像(例如图形

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
title: "Title"
mainfont: Arial
output:
    pdf_document:
      latex_engine: xelatex
      fig_caption: false
      fig_height: 4
geometry: margin=.5in
params:
    images_params: !r list.files(path = "./images/", pattern = "\\.jpg$", full.names = TRUE)
    data: mtcars
---

在Markdown中,指定图像所在的位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
knitr::include_graphics(params$images_params) #calls on the param

并让另一个脚本运行它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plotting_function <- function(df) {


  split_df <- split(df, df$Question)

  names <- names(split_df)

  plots <- map2(split_df, names, 
                ~ggplot(.x, aes(x = Age,
                                y = Duration_call)) +
                          geom_point()

  )

}

reports <- plotting_function(sample_data)


reports %>% pwalk(rmarkdown::render, 
                  input = "./path/Report.Rmd",
                  "pdf_document", envir = new.env())

这将创建一个新的pdf,并在您指定的位置插入图像。

我写了一些关于这个过程的here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58203042

复制
相关文章
Ruby 连接到 MySQL 并执行SQL查询
require 'mysql' m = Mysql.new("localhost","ruby","secret","maillist") r = m.query("SELECT * FROM people ORDER BY name") r.each_hash do |f| print "#{f['name']} - #{f['email']}" end </pre> require 'mysql' m = Mysql.new("localhost","ruby","secret","maill
用户8983410
2021/11/02
1.5K0
配置Oracle Gateway 12连接到SQL server 2014
最近的工作中需要基于Oracle连接到SQLserver2014,我们可以通过配置Gateway的方式来实现这个功能。这个Gateway的实质是透过dblink来实现的。即把SQLserver模拟成一个远端的Oracle实例,这个实例由Gateway来负责进行接收,转发等等。本文简要描述其配置过程。
Leshami
2018/08/13
2.9K0
配置Oracle Gateway 12连接到SQL server 2014
问与答94:如何替换多个相同的数据并依次编号?
Q:我有一个工作表,我想将里面多个相同的数据进行替换,并按顺序依次编号,如何使用VBA代码实现?例如下图1的列B中有多个“完美Excel”,使用VBA代码将其替换为“excelperfect”并加上数字编号,即“excelperfect1”、“excelperfect2”、“excelperfect3”……等。
fanjy
2021/02/22
1.5K0
问与答94:如何替换多个相同的数据并依次编号?
数据库SQL语句大全——最常用的SQL语句
检索数据: 检索单个列: SELECT pname FROM product 检索多个列: SELECT pname,market_price,is_hot FROM product 检索所有列: SELECT * FROM product 过滤检索结果中的重复数据: SELECT DISTINCT market_price FROM product DISTINCT关键字: 1、返回不同的值,使用时放在列名的前面 2、多查询一个及以上列时,除非你查询的所有列的数据都不同,否则所有行都将被检索出来
说故事的五公子
2019/09/29
3K0
sql语句update中多个case/when的写法
又如: update xxxx_xxxx set xxx_type= CASE WHEN xxx_type = '0' THEN 'YXLX-0' WHEN xxx_type= '1' THEN 'YXLX-1' WHEN xxx_type= '2' THEN 'YXLX-2' END where YYY_type='1'
微风-- 轻许--
2022/04/13
3.4K0
sql语句update中多个case/when的写法
Mybatis 执行后 参数 未拼接到 SQL语句中
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
IT小马哥
2020/03/18
1.2K0
如何安装,运行和连接到远程服务器上的Jupyter Notebook
Jupyter Notebook是一个开源的交互式Web应用程序,允许您使用40多种编程语言编写和运行计算机代码,包括Python,R,Julia和Scala。来自Project Jupyter的产品,Jupyter Notebook对于迭代编码非常有用,因为它允许您编写一小段代码,运行它并返回结果。
尘埃
2018/11/20
16.6K0
sql server 连接查询_连表查询语句
连接查询包括合并、内连接、外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要。
全栈程序员站长
2022/10/05
3.4K0
if sql语句_SQL IF语句介绍和概述
This article explores the useful function SQL IF statement in SQL Server.
全栈程序员站长
2022/09/13
2.4K0
if sql语句_SQL IF语句介绍和概述
批量运行多个R脚本并打印运行状态
曾老师曾经有一篇推文《批量运行多个R脚本》,介绍了批量运行R脚本的思路,同时也提出了一些问题,今天就这个学徒作业,我们来探究一下。
小汪Waud
2023/02/20
9330
批量运行多个R脚本并打印运行状态
sql数据库查询语句大全_sql基本语句大全
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/05
2.1K0
SQL语句在MYSQL中的运行过程和各个组件的介绍
连接器: 权限校验,查看登录用户是否有权限访问数据库,如果出错就会出现(Access denied for user)然后运行程序就结束了如果连接成功连接器就会去查看这个用户的权限,即以后的权限逻辑都是依赖于次权限,在连接过程中如果长时间没有操作则会在默认的时间内进行断开连接(wait_timeout)。
袁新栋-jeff.yuan
2020/08/26
1.9K0
Redis服务器运行多个数据库以及切换数据库的影响
在Redis服务器中,数据库是由Redis数据结构和键值存储系统支持的。Redis服务器提供了多个数据库,每个数据库都是由唯一的一个数值标识符表示。默认情况下,Redis服务器提供16个数据库,标识符从0到15。
一凡sir
2023/09/20
5280
Redis服务器运行多个数据库以及切换数据库的影响
数据库中的having语句_sql的having语句
HAVING语句通常与GROUP BY子句及聚集函数COUNT,AVG,SUM,MAX,MIN语句联合使用,用来过滤由GROUP BY语句返回的记录集,通常跟在GROUP BY后边作用相当于WHERE。
全栈程序员站长
2022/10/03
2.2K0
多个FeignClient使用相同的name
FeignClient标签默认使用name属性作为bean name,name属性同时为服务名。 如果指定了contextId属性,则使用contextId作为bean name。 如此可为一个服务创建多个FeignClient: @FeignClient(name = "my-service-id", contextId = "my-service-id-api1") public interface Api1FeignClient { } @FeignClient(name = "my-service
路过君
2020/12/17
3.5K0
SQL语句distinct的多个字段去重问题
Group_concat介绍与例子_HashMap黑龙江分Map的博客-CSDN博客_group_concat
全栈程序员站长
2022/11/03
2.9K0
SQL数据库查询语句
select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息、复制、创建数据表。其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频率最高的语句。
全栈程序员站长
2022/08/29
4.3K0
讲解SQL数据库语句
(1)完全函数依赖:(学号、课程号) →f 成绩 (2)部分函数依赖 :(学号、课程号) →p 姓名 (3)传递函数依赖 :学号→所属系号,所属系号→宿舍楼号,学号→t宿舍楼号
达达前端
2019/07/03
1.9K0
讲解SQL数据库语句
点击加载更多

相似问题

在代码中处理大数字

50

如何在Shell命令中对大数字进行舍入?

21

Safari在HTML5输入数字字段中对大数字进行舍入

11

防止JavaScript Number函数对大数字进行舍入

41

在Django FloatField中使用逗号分隔大数字

221
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文