gpt4 book ai didi

r - 根据 Shiny R 的输入显示或隐藏 R Markdown 文本

转载 作者:行者123 更新时间:2023-12-04 14:55:22 24 4
gpt4 key购买 nike

我开发了一个 Shiny 的应用程序,其中包含一些部分:A、B、C 和 D。在每个部分中,用户都可以制作一些情节。 Shiny App 有一个额外的部分,允许用户在整个 downloadHandler 函数中以 html 格式下载每个部分中完成的所有绘图。因此,用户点击“下载”按钮,就会生成一个包含用户已完成绘图的 html。

这是通过另一个文件完成的,一个 R markdown 文件,它接收 shiny 应用程序的输入。在 R markdown 中,每个图后面都有一些 block 外的文本。

所以 R markdown 的结构是这样的:

A 部分

(A节剧情,来自一个chunk)
(A段的文字,在 block 外)

B 部分

(B节剧情,来自一个chunk)
(B段的文字,在 block 外)

C 部分

(C段剧情,来自一个chunk)
(C段的文字,在 block 外)

D 部分

(D段剧情,来自一个chunk)
(D段的文字,在 block 外)

但是如果用户对 B 部分不感兴趣怎么办?如果在 Shiny 的应用程序中用户决定不选择任何输入来制作情节怎么办?在这种情况下,当点击 shiny 应用程序中的下载按钮时,会产生错误并且不会产生 HTML 输出。

所以问题来了:有没有办法让用户选择(例如使用 checkboxInput)哪些部分要出现在 HTML 输出中?因此,如果用户选中 A 和 C,生成的 HTML 将是:

A 部分

(A节剧情,来自一个chunk)
(A段的文字,在 block 外)

C 部分

(C段剧情,来自一个chunk)
(C段的文字,在 block 外)

当然,我猜 R markdown 文件中需要一些代码,某种 ifelse 语句来显示或隐藏部分。我知道如何为 block 代码做这件事,使用 R 语言很容易,但是文本呢?标题“第 X 节”和该节的文本怎么样?如何在 checkboxInput 的功能中动态包含或排除?

最佳答案

实现所需结果的一种方法是通过代码块添加文本,例如cat 和 block 选项 results='axis'。在这种情况下,您可以使用参数化报告,并根据参数动态包含所需的文本:


---
title: "Untitled"
output: html_document
params:
section: !r c("SectionA")
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```

```{r include="SectionA" %in% params$section, results='asis'}
cat("## Section A",
"Lorem Ipsum",
sep = "\n")
```

```{r include="SectionB" %in% params$section, results='asis'}
cat("## Section B",
"Lorem Ipsum",
sep = "\n")
```

```{r include="SectionC" %in% params$section, results='asis'}
cat("## Section C",
"Lorem Ipsum",
sep = "\n")
```

然后在您 Shiny 的应用程序中渲染 Rmd 文件,如下所示:

rmarkdown::render("test.Rmd", params = list(section = c("SectionA", "SectionC"))

enter image description here

关于r - 根据 Shiny R 的输入显示或隐藏 R Markdown 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68128674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com