【发布时间】:2019-12-03 17:27:55
【问题描述】:
我在从“带参数的针织”RMD 文件中命名输出 PDF 文件时遇到问题。我的 YAML 标头看起来像这样:
---
title: "Discounting"
output: pdf_document
#with more parameters for later
---
我的文件名为“Discounting Script.rmd”
现在,当我运行我的 rmd 文件时,输出 PDF 名为“Discounting Script.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("","\n\n")
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 -> 执行停止
【问题讨论】:
-
Yaml 标头不采用 Excel 代码(第一个示例)或原始 R 代码(第二个示例),但您可以使用
`r paste0(...)`(如 stackoverflow.com/q/23449319)。 -
虽然我认为这是该链接的副本,但您的评论 "can't use rmarkdown::render" 也是一个问题:您如何尝试使用参数,发生了什么?请具体说明,包括提供一个最小的工作示例或至少提供您得到的逐字记录错误(带有证实代码)。
-
title: "IBNR Discounting" output: pdf_document output_file:
r paste0("IBNR Discounting ", Sys.Date, ".pdf")得到以下错误 yaml::yaml.load(..., eval.expr = TRUE) 中的错误:扫描仪错误:映射在第 3 行第 14 列的上下文中不允许使用值调用:... parse_yaml_front_matter -> yaml_load -> 执行暂停 -
评论在维护重要代码或数据的布局方面非常糟糕。如果它与问题相关,请将其添加到问题中。谢谢! (但如果那是你的文字代码,你的意思是使用
Sys.Date(),包括括号?) -
已更新,包含代码。
标签: r r-markdown