2014-09-23 8 views
3

내 목표는 선택 입력에서 텍스트 입력으로 값을 채우는 것입니다. 텍스트 입력은 나중에 사용자가 수정할 수 있어야합니다. 불행히도, 내 애플 리케이션이 작동하지 않습니다 (선택이 채워지지 않은)하지만 오류가 없습니다.Shiny의 텍스트 상자를 채우기위한 입력 선택

ui.R 잘못 될 수 있는지의

library(shiny) 

shinyUI(fluidPage(

    sidebarLayout(
     sidebarPanel(
      selectInput("id", 
         label = "Choose a number", 
         choices = list() 
      ), 

      textInput("txt1", "number", 0) 

     ), 



     mainPanel(

     ) 
    ) 
)) 

server.R

df <- data.frame(a=c(1,2),b=c(3,4)) 

shinyServer(function(input, output, session) { 
    # fill the select input 
    updateSelectInput(session, "id", choices = df$a) 

    observe({ 
     # When I comment this line, the select is correctly filled 
     updateTextInput(session, "txt1", value = df[df$a==input$id,'a']) 
    }) 

}) 

어떤 아이디어?

답변

2

귀하의 코드는 예를 들어, 데이터 집합 나를 위해 작동하지 않습니다,하지만 작동 :

df <- data.frame(a=c("a","b"),b=c(3,4)) 

내 생각은 updateSelectInput은() 문자를 필요로한다는 것이다.

updateSelectInput(session, "id", choices = as.character(df$a)) 

을하지만 df 명령 정의하는 경우로 : 그러나이 작동하지 않습니다이 작동

df <- data.frame(a=c("1","2"),b=c(3,4)) 

. 예를 들어 완전한 코드 :

library(shiny) 

df <- data.frame(a=c("1","2"),b=c(3,4)) 

shinyApp(
    ui = shinyUI(fluidPage(
    sidebarLayout(
     sidebarPanel(
     selectInput("id", 
      label = "Choose a number", 
      choices = list() 
     ), 
     textInput("txt1", "number", 0) 
    ), 
     mainPanel() 
    ) 
)), 
    server = shinyServer(function(input, output, session) { 
    updateSelectInput(session, "id", choices = df$a) 

    observe({ 
     updateTextInput(session, "txt1", value = df[df$a==input$id,'a']) 
    }) 
    }) 
) 
+0

""을 추가했지만 여전히 작동하지 않습니다. – poiuytrez

+0

@poiuytrez 그것은 나를 위해 작동합니다. 반짝 반짝 빛나는 버전이 있습니까? – ddiez

+0

@poiuytrez가 나를 위해 작동하는 코드를 게시했습니다 (전체 청크를 복사하여 복사 할 수 있습니다). 이 방법이 효과가 없습니까? – ddiez

관련 문제