rmarkdown 闪亮的用户输入块?
rmarkdown shiny user input in chunk?
我有一个闪亮的应用程序,允许用户下载 HTML 文件(从 .Rmd 文件编写),其中包含用于 运行 基于所有用户输入的分析的代码.我正在尝试编写在用户输入不同时被更改的基本 .Rmd 文件。我在将用户输入变量(例如 input$button1)包含到 R 代码块中时遇到问题。说 input$button1 的用户输入 = "text1".
```{r}
results <- someFun(input$button1)
```
我想把它织成这样:
```{r}
results <- someFun('text1')
```
不过,每次我下载针织 HTML 时,我都会 input$button1
写入文件。我还希望能够生成一个使用此替换格式化的 .Rmd 文件。似乎 knit_expand()
可能是关键,但我似乎无法将可用示例与我的具体问题联系起来。是 knit_expand()
整个 .Rmd 文件并明确指定您想要代入的所有参数的正确方法,还是 .Rmd 文件本身有更优雅的方法?我更喜欢类似于 的方法,除了我可以使用 r
引擎而不是 asis
引擎。任何帮助将不胜感激。谢谢!
知道了。下面的解决方案。感谢一辉的指导。诀窍是 knit_expand()
整个 .Rmd 文件,然后 writeLines()
到一个新文件,然后渲染。事后看来,整个过程是有道理的。事后看来。
例如,p1
是一个字符参数'ice cream'
,p2
是一个整数参数10
。 ui.R
中有一个名为 input$mdType
的 user-defined 参数,用于决定提供下载的格式。
Rmd 文件:
Some other text.
```{r}
results <- someFun("{{p1}}", {{p2}})
```
在downloadHandler()
内server.R:
content = function(file) {
src <- normalizePath('userReport.Rmd')
# temporarily switch to the temp dir, in case you do not have write
# permission to the current working directory
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, 'userReport.Rmd')
exp <- knit_expand('userReport.Rmd', p1=input$p1, p2=input$p2)
writeLines(exp, 'userReport2.Rmd')
out <- rmarkdown::render('userReport2.Rmd', switch(input$mdType,
PDF = pdf_document(), HTML = html_document(), Word = word_document()))
}
file.rename(out, file)
}
渲染前结果userReport2.Rmd:
```{r}
results <- someFun("ice cream", 10)
```
我有一个闪亮的应用程序,允许用户下载 HTML 文件(从 .Rmd 文件编写),其中包含用于 运行 基于所有用户输入的分析的代码.我正在尝试编写在用户输入不同时被更改的基本 .Rmd 文件。我在将用户输入变量(例如 input$button1)包含到 R 代码块中时遇到问题。说 input$button1 的用户输入 = "text1".
```{r}
results <- someFun(input$button1)
```
我想把它织成这样:
```{r}
results <- someFun('text1')
```
不过,每次我下载针织 HTML 时,我都会 input$button1
写入文件。我还希望能够生成一个使用此替换格式化的 .Rmd 文件。似乎 knit_expand()
可能是关键,但我似乎无法将可用示例与我的具体问题联系起来。是 knit_expand()
整个 .Rmd 文件并明确指定您想要代入的所有参数的正确方法,还是 .Rmd 文件本身有更优雅的方法?我更喜欢类似于 r
引擎而不是 asis
引擎。任何帮助将不胜感激。谢谢!
知道了。下面的解决方案。感谢一辉的指导。诀窍是 knit_expand()
整个 .Rmd 文件,然后 writeLines()
到一个新文件,然后渲染。事后看来,整个过程是有道理的。事后看来。
例如,p1
是一个字符参数'ice cream'
,p2
是一个整数参数10
。 ui.R
中有一个名为 input$mdType
的 user-defined 参数,用于决定提供下载的格式。
Rmd 文件:
Some other text.
```{r}
results <- someFun("{{p1}}", {{p2}})
```
在downloadHandler()
内server.R:
content = function(file) {
src <- normalizePath('userReport.Rmd')
# temporarily switch to the temp dir, in case you do not have write
# permission to the current working directory
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, 'userReport.Rmd')
exp <- knit_expand('userReport.Rmd', p1=input$p1, p2=input$p2)
writeLines(exp, 'userReport2.Rmd')
out <- rmarkdown::render('userReport2.Rmd', switch(input$mdType,
PDF = pdf_document(), HTML = html_document(), Word = word_document()))
}
file.rename(out, file)
}
渲染前结果userReport2.Rmd:
```{r}
results <- someFun("ice cream", 10)
```