防止 rmarkdown 参数将字符串输入转换为数字
Prevent rmarkdown params to convert string input to numeric
这里是第一个问题:),
我一直在尝试按照 rmarkdown 文档中的建议构建一个 parametrized rmarkdown report 并将环境变量作为输入。但是,我分配的环境变量(作为字符)被评估为数字(而不是字符)。
这是一个可重现的示例,由 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")))
感谢任何帮助,谢谢!
感谢@123 的评论,解决方案只是转义环境变量。
通过替换我 test.sh
中的这一行
R -e "rmarkdown::render('test-report.Rmd', params = list(latest_update = '$now'))"
我获得了 2016-04-12
的所需输出(因此,未更改的字符串值)。
(感谢123!)
这里是第一个问题:),
我一直在尝试按照 rmarkdown 文档中的建议构建一个 parametrized rmarkdown report 并将环境变量作为输入。但是,我分配的环境变量(作为字符)被评估为数字(而不是字符)。
这是一个可重现的示例,由 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")))
感谢任何帮助,谢谢!
感谢@123 的评论,解决方案只是转义环境变量。
通过替换我 test.sh
R -e "rmarkdown::render('test-report.Rmd', params = list(latest_update = '$now'))"
我获得了 2016-04-12
的所需输出(因此,未更改的字符串值)。
(感谢123!)