r语言 - 有不同的.RMD 文件和输出文件名



我在从"Knit with Parameters"RMD文件中命名我的输出PDF文件时遇到了麻烦。 我的 YAML 标头如下所示:

---
title: "Discounting"
output: pdf_document 
#with more parameters for later
---

我的文件名为"折扣脚本.rmd">

现在,当我运行我的rmd文件时,输出的PDF被称为"折扣脚本.pdf"我想让它像"折扣"和Sys.Date((和".pdf",但我似乎无法做到。 如果我能够在下面的代码中的某个地方执行此操作以获得类似的名称,我可以为 rmd 文件"另存为"。 我不能使用 rmarkedown::render,因为我必须用参数编织(我已经尝试过渲染,我只得到错误(

我想在输出下添加一个部分,所以它看起来像这样:

---
title: "Discounting"
output: pdf_document
output_file: "Discounting " & Sys.Date() & ".pdf"
---

我也试过"

---
title: "Discounting"
output: pdf_document
output_file: paste0("Discounting ",Sys.Date(),".pdf")
---

但两者都不起作用,它们都抛出错误。这应该是一个简单的操作,但我在网上找不到任何对我有帮助的东西。

这是"整个文件",YAML 标头下的所有内容都可以正常工作,这只是我有问题的标头。

---
title: " Discounting"
output: pdf_document 
output_file: `r paste0("Discounting ", Sys.Date(), ".pdf")`
params:
CPI: 
label: "CPI:"
value: .02
Federal_Bonds: 
input: slider
label: "Federal Bonds are on rows:"
min: 6
max: 12
value: [7,8]
step: 1
round: 1
dragRange: true
Provincial_Bonds:  
label: "Provincial Bonds are on rows:"
min: 10
max: 35
step: 1
round: 1
value: [15, 28]
Corporate_Bonds:  
label: "Corporate Bonds are on rows:"
value: [35,86]
min: 30
max: 100
round: 1
step: 1
---
```{r eval = TRUE, echo= FALSE, warning = FALSE, results = "asis", message = FALSE}
Federal_Start <- params$Federal_Bonds[1]
Federal_End <-params$Federal_Bonds[2]
Provincial_Start <- params$Provincial_Bonds[1]
Provincial_End <- params$Provincial_Bonds[2]
Corporate_Start <- params$Corporate_Bonds[1]
Corporate_End  <- params$Corporate_Bonds[2]
CPI <- params$CPI
```

```{r eval = TRUE, echo= FALSE, warning = FALSE, results = "asis", message = FALSE}
#loading packages
library(plyr)
library(dplyr)
library(kableExtra)
library(scales)
library(ggplot2)
library(RODBC)
library(data.table)
library(DT)
library(treemapify)
library(devtools)
library(digest)
library(plotly)
library(shiny)
library(ggrepel)
library(readxl)
library(tvm)
library(jrvFinance)
library(lubridate)
```
```{r eval = TRUE, echo= FALSE, warning = FALSE, results = "asis", message = FALSE}
printSectionTitle <- function (title) {
cat("","nn")
template <- title
cat(sprintf(template),"  n")
}
```
```{r eval = TRUE, echo= FALSE, warning = FALSE, results = "asis", message = FALSE} 
port_table <- c(Federal_Start, Federal_End, Provincial_Start, Provincial_End, Corporate_Start, Corporate_End, CPI)
```

```{r eval = TRUE, echo= FALSE, warning = FALSE, results = "asis", message = FALSE}
#Formatting the tables and creating a pretty report
printSectionTitle(sprintf("# %s","The Company"))
printSectionTitle(sprintf("# %s","Merging of Bond Portfolio with Other Risk Free Assets"))
printSectionTitle(sprintf("## %s",paste0("as at ", format(as.Date(Start_Date), "%d %B %Y"))))

colnames(port_table) <- c("","")
port_kable <- kable(port_table, align = "r",col.names = NA)
port_kable <- row_spec(port_kable, row = c(4, 7), bold = TRUE, underline = TRUE)
print(kable_styling(port_kable, bootstrap_options = "striped",latex_options = "hold_position", position ="left"))
```

上面的代码得到这个错误 yaml::yaml.load(..., eval.expr = TRUE( 中的错误: 扫描程序错误:此上下文中不允许在第 3 行第 14 列处映射值 调用:。。。parse_yaml_front_matter -> yaml_load -> 执行已停止

一种选择是使用rmarkdown::render来呈现 R Markdown 输出(称为折扣。此处的 Rmd(,来自单独的 .R 脚本。您可以在params参数中分配参数:

rmarkdown::render(
"test_knit.Rmd",
params = list(cpi = 10),
output_file = paste0("Discounting_", Sys.Date(), ".pdf")
)

您的 Rmd 文件看起来像这样:

---
params:
cpi:
output: pdf_document
title: "Discounting"
---
### Content
```{r}
params$cpi * 5
```

这将生成一个以今天日期命名的 PDF 输出。

最新更新