首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过RMarkdown文档传递参数?

通过RMarkdown文档传递参数?
EN

Stack Overflow用户
提问于 2021-05-14 04:13:08
回答 1查看 221关注 0票数 1

我希望为给定的供应商列表创建唯一/单独的报告。理想的输出格式应该是给定供应商信息的单独html文件。

问题是,我在RMarkdown中创建参数化报表时遇到了麻烦。我一直在研究这个link,以了解如何循环/迭代RMarkdown报告

为了说明和分享我想要执行的逻辑,如下所示:

代码语言:javascript
运行
复制
for (vendor in vendor.name) {
  rmarkdown::render('input.Rmd', params = list(vendor = vendor))
}

然后我有了一个打印出来的:

代码语言:javascript
运行
复制
Vendor-1.html, Vendor-2.html, …, Vendor-4.html, and vendor-4.html

然后在本地保存到我的电脑上。我想说的是,我们有一个按月销售的条形图,传递整个文档的参数如何知道何时更改供应商编号以获得唯一的视图。

如果任何人可以分享一个例子,无论是iris,mtcar,或者R中的任何基本数据集,我都会非常感谢。看一下这个工作流程/逻辑是如何工作的,因为我正在努力理解这个概念。

具体来说,假设我在这里有一段代码。如果我没有在块中调用params$vendor函数,那么它如何知道在另一个供应商上循环。在我的过滤器上的dplyr动词中,我应该做什么,MVNDR_NBR == qc_sales$vendor_number还是params$qc_sales$vendor_number?这是最让我困惑的一篇文章。

代码语言:javascript
运行
复制
sales_2021_stock <- qc_sales %>%
    filter(FSCL_YR == 2021
          , STR_NBR != '8119'
          , MAPPED_ORD_SRC  == 'QC'
          , so_flg == 0
          , YTLW_TY_LY_FLG == 'TY'
          , MVNDR_NBR == '60031167'
          , !SUB_DEPT_NBR %in% c('0025','0028')) %>% 
  group_by(MVNDR_NBR, MVNDR_NM, FSCL_WK_NBR, FSCL_YR) %>%  
  summarise(Sales = sum(ESVS_NET_SLS)) %>%  
  mutate(FSCL_YR = as.character(FSCL_YR)) %>%  
  collect()

sales_2020_stock <- qc_sales %>%
    filter(FSCL_YR == 2020
          , STR_NBR != '8119'
          , MAPPED_ORD_SRC  == 'QC'
          , YTLW_TY_LY_FLG == 'LY'
          , so_flg == 0
          , MVNDR_NBR == '60031167'
          , !SUB_DEPT_NBR %in% c('0025','0028')) %>% 
  group_by(MVNDR_NBR, MVNDR_NM, FSCL_WK_NBR, FSCL_YR) %>%  
  summarise(Sales = sum(ESVS_NET_SLS)) %>%  
  mutate(FSCL_YR = as.character(FSCL_YR)) %>%  
  collect()

sales_comp_line_stock <-  rbind(sales_2021_stock, sales_2020_stock)


stock_comp <-  ggplot(sales_comp_line_stock, aes(x = FSCL_WK_NBR, y = Sales, color = FSCL_YR ))+
  geom_line(size = 1.25, aes(color = FSCL_YR))+
  geom_smooth(size = .50, aes(color = FSCL_YR), se = FALSE, method = "auto")+
  scale_x_continuous(breaks=seq(0,weeks,1))+
  scale_y_continuous(labels = scales::dollar_format(scale = .0001, suffix = "K"))+
  scale_color_manual(values=c("#0298F9", "#F96302"))+
  theme_economist()+
   ggtitle('Week-Over-Week Sales (Stock) 2021 v 2020')+
    theme(
    panel.grid.major = element_line(linetype = "dotted"),
    axis.text = element_text( size = 10),
    legend.position = c(0, 1),legend.justification = c(0, 1),
    plot.title = element_text( size = 14, margin=margin(0,0,20,0), hjust = 0.5),
    panel.background = element_rect(fill = NA),
     strip.text = element_text(size=10)
  )

stock_comp

我的数据集如下所示,这些都是我的参数中包含的相同的供应商,我如何创建一个显示每月销售额的ggplot,并将其打印到单个html输出中?

理想情况下,一个图应该是这样写的:

代码语言:javascript
运行
复制
ggplot(sample_vendor_tbl, aes(x = FSCL_MTH_NM, y = Sales)) +
  geom_col()

要在一个文档中打印出多个ggplot,我将执行以下操作:

代码语言:javascript
运行
复制
for (i in vendor_nbr){
  ggplot(mydata, aes(x = Month, y = sales))+
geom_col()
}

当我们需要计算参数时,我只是在这里感到困惑。我如何为给定的供应商创建打印输出的图,类似于您答案中发布的示例。我基本上想用图表做您在答案中所做的事情,但利用ggplot而不是基数R

要使用参数创建ggplot,我必须将params$mvndr_nbr引入到我的dplyr动词中,如下所示:

代码语言:javascript
运行
复制
sample_vendor_tbl %>%  
  filter(MVNDR_NBR == params$MVNDR_NBR) %>%  
  ggplot(aes(x = FSCL_MTH_NM, y = Sales)) +
  geom_col()
EN

Stack Overflow用户

回答已采纳

发布于 2021-05-14 04:42:13

我认为您遗漏的步骤是指定输出文件名,以便每个“供应商”都有自己的文件;否则,每次都会覆盖相同的文件名,只留下一个HTML文档。

举个例子:

代码语言:javascript
运行
复制
---
title: mtcars cyl
author: r2evans
params:
  cyl: null
---

We have chosen to plot a histogram of `mtcars` where `$cyl` is equal to `r params$cyl`:

```{r}

dat <-子集(mtcar,cyl ==参数$cyl)

如果(nrow(dat) > 0) {

历史(dat$disp)

}

代码语言:javascript
运行
复制

使用以下命令调用此方法:

代码语言:javascript
运行
复制
for (cy in c(4,6,8)) {
  rmarkdown::render("~/StackOverflow/10466439/67525642.Rmd", 
                    output_file = sprintf("cyl_%s.html", cy),
                    params = list(cyl = cy))
}

将呈现三个cyl_4.htmlcyl_6.htmlcyl_8.html文件,每个文件都有不同的内容:

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

https://stackoverflow.com/questions/67525642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档