2016-10-19 2 views
1

R 반짝이 응용 프로그램의 여러 위치에서 동일한 반응 텍스트 출력을 표시하려고합니다. 내가 초기 텍스트를 선정 편지 보여주는 앱 중간 fluidRow(textOutput("text1")),을 삭제하면Shiny의 반응 출력 반복

--- 
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") 
) 
) 
``` 

이 코드는 잘 작동 : 여기 (단일 R 인하 문서) 간단한 예입니다과 반응 입력 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") 
) 
) 
+2

같은 id를 가진 두 개의 출력을 가질 수 없습니다. –

+0

해당 정보 주셔서 감사합니다. 당신이 대답으로 제공한다면, 나는 그것을 받아 들일 것입니다. 그것이 명시 적으로 언급 된 장소를 가리킬 수 있습니까? –

답변

2

반짝이 입력/출력에는 고유 ID가 있어야합니다. 빛나는 애플 리케이션에서 http://shiny.rstudio.com/articles/modules.html

입력 및 출력 ID에서 견적 글로벌 네임 스페이스, 의미, 각 ID는 전체 응용 프로그램에서 고유해야합니다 공유 할 수 있습니다. 함수를 사용하여 UI를 생성하고 해당 함수가 입력을 생성하고 출력을 생성하는 경우 ID가 충돌하지 않도록해야합니다.

반짝이 모듈과 네임 스페이스는 코드를 구성하고 이름 충돌을 피할 수있는 방법을 제공합니다.