Я пытаюсь создать Rmarkdown, который отображает различное количество текста на основе пользовательского ввода в блестящем приложении. Я сделал базовый пример ниже. Есть 2 ввода текста и флажок. Если флажок установлен в ложь, в уценку будет напечатано только значение 1-го текстового поля. Если флажок установлен в true, то оба значения печатаются. Я хочу, чтобы выходные данные для обоих текстовых полей отображались как выходные данные 1-го текстового поля.
Ui:
library(shiny)
library(shinyjs)
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
textInput(inputId = "text1",
label = "1st text", value = "1st text"),
checkboxInput(inputId = "checkBox", label = "Checkbox"),
textInput(inputId = "input2",
label = "2nd text", value = "2nd text"),
downloadButton("download", "Download button")
),
mainPanel(
verbatimTextOutput("checkBoxValue")
)
)
)
Сервер:
library(shiny)
library(shinyjs)
server <- function(input, output) {
output$checkBoxValue <- renderText(input$checkBox)
Text1Value <- reactive({input$text1})
BoxValue<- reactive(input$checkBox)
Input2Value <- reactive({input$input2})
output$download <- downloadHandler(
filename = "Test.docx",
content = function(file) {
tempReport <- file.path(tempdir(), "TestRMD.Rmd")
file.copy("TestRMD.Rmd", tempReport, overwrite = TRUE)
params = list(
Text1Value = Text1Value(),
BoxValue = BoxValue(),
Input2Value = Input2Value()
)
rmarkdown::render(
tempReport,
output_file = file,
params = params,
envir = new.env(parent = globalenv()),
quiet = FALSE
)
})
}
Rmarkdown:
---
title: "Test"
output: word_document
params:
Text1Value: NA
BoxValue: NA
Input2Value: NA
---
```{r echo= FALSE, message = FALSE, include = FALSE}
library(shiny)
library(knitr)
library(latex2exp)
Text1Value<- params$Text1Value
BoxValue<- params$BoxValue
Input2Value<- params$Input2Value
```
# Value for text 1 is `r Text1Value`
```{r, echo=FALSE}
if(BoxValue == TRUE){
"Value for input 2 is `r Input2Value`"
}
```
В настоящее время я могу сделать так, чтобы текст из второго текстового вывода отображался условно, однако он выглядит как R-код. Я хочу, чтобы он отображался в том же формате, что и выходные данные для 1-го ввода текста.
Как бы я выполнил sh это?