[英]Repeating reactive output in Shiny
我想在R Shiny應用程序的多個位置顯示相同的反應文本輸出。 這是一個簡單的示例(在單個R markdown文檔中):
---
output: html_document
runtime: shiny
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=FALSE)
```
```{r}
output$text1 <- renderText({
paste("Selected letter:", input$var)
})
fluidPage(
fluidRow(
selectInput("var", label="Choose a letter", choices=letters[1:4], selected="b")
),
fluidRow(
textOutput("text1")
),
fluidRow(
textOutput("text1")
)
)
```
如果我刪除中間的fluidRow(textOutput("text1")),
並且應用程序顯示初始文本“ 所選字母:”和反應輸入b一次,則此代碼可以正常工作。 但是,如果我保留這段代碼,它不會像我期望的那樣兩次顯示相同的文本。 相反,該應用程序顯示初始文本“ 所選字母”:僅一次,而反應式輸入b則根本不顯示。
為了完整起見,我添加了示例代碼(用於第二個塊),該代碼提供了解決方法。
n <- 2
for(i in seq(n)) {
output[[paste0("text",i )]] <- renderText(paste("Selected letter:", input$var))
}
fluidPage(
fluidRow(
selectInput("var", label = "Choose a letter",
choices = letters[1:4], selected = "b")
),
fluidRow(
textOutput("text1")
),
fluidRow(
textOutput("text2")
)
)
閃亮的輸入/輸出必須具有唯一的ID。 引用http://shiny.rstudio.com/articles/modules.html
Shiny應用程序中的輸入和輸出ID共享一個全局名稱空間,這意味着每個ID在整個應用中必須唯一。 如果使用函數生成UI,並且這些函數生成輸入和輸出,則需要確保所有ID都不沖突。
閃亮的模塊和命名空間提供了一種組織代碼並避免名稱沖突的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.