簡體   English   中英

在Shiny中重復無功輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM