这里的第一个问题:),
我一直在尝试使用环境变量作为输入构建parametrized rmarkdown report,如rmarkdown文档中所述。但是,我正在分配的环境变量(作为字符)被评估为数字(而不是字符)。
以下是一个可重现的示例,由2个文件组成:bash脚本test.sh
,用于调用报告test-report.Rmd
以生成所需的输出。
以下是test.sh
#!/bin/bash
now=$(date +"%Y-%m-%d")
echo "Analysis for" $now
R -e "rmarkdown::render('test-report.Rmd', params = list(latest_update = as.character($now)))"
正如您在下图中所观察到的那样,我分配给latest_update
的环境变量被评估为数字(而不是字符)。我希望看到2016-04-12
代替2000
作为params$latest_update
这是我test-report.Rmd
的代码:
---
title: "Test Report"
author: "test author"
fontsize: 8pt
output:
html_document
params:
latest_update:
value: !r as.character("2016-04-12")
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE, results = 'asis')
```
```{r params}
cat("# here are some params!")
cat("\n\n")
cat("param value: ")
cat(params$latest_update)
cat("\n\n")
```
为了进一步隔离问题,我尝试输入一个字符串(而不是环境变量到rmarkdown::render
,但我仍然得到上述相同的结果。
R -e "rmarkdown::render('test-report.Rmd', params = list(latest_update = as.character("2016-04-12")))
感谢任何帮助,谢谢!
答案 0 :(得分:1)
感谢@ 123的评论,解决方案只是转义环境变量。
在我的test.sh
R -e "rmarkdown::render('test-report.Rmd', params = list(latest_update = '$now'))"
我获得了2016-04-12
的所需输出(因此,未改变的字符串值)。
(谢谢 123 !)