防止 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!)