是否可以将 R 表达式从函数注入内联 Markdown 代码中? 假设我们有一个这样的 Rmarkdown 文档:
# doc.Rmd
...
This is my random number `r sample(1:10, 1)`.
可以以某种方式转变成这样吗?:
```
insert_number <- function() {
`r sample(1:10, 1)` # the code is invalid, only illustration
}
```
This is my random number `r insert_number()`
我的目标是使用函数动态生成 r 内联块,并且当渲染文档时,这些块会像通常的块一样被正确解释。我不想插入随机数,我想按原样插入表达式
r sample(1:10, 1)
。
我认为你想做的事情是可能的。例如:
---
title: "Untitled"
date: "2023-11-23"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
makeFn <- function(body) {
paste("insert_number <- function() {", body, "}")
}
```
This will make `insert_number()` generate a normal:
```{r code = makeFn("rnorm(1)"), echo = FALSE}
```
Here's the number: `r insert_number()`.
This will make it return pi:
```{r code = makeFn("pi"), echo = FALSE}
```
Here's the number: `r insert_number()`.