2016-07-25 3 views
0

저는 팝업 대화 상자에서 질문을하고 질문에 대답하고, 상자를 사라지게 한 다음 내 앱을 실행하는 앱을 가지고 있습니다.Shiny의 팝업 상자를 만들어 입력 데이터를 얻으려면 어떻게하면 Shiny 앱에서 전진 할 수 있습니까?

내가 일주일 동안 검색하고 아무 소용이 많은 것을 시도

. 나는 단지 readline()을 시도했다. 나는 ShinyBS를 보았지만 어떤 예제도 작동하지 않는다. 나는 tcltk2를 들여다 보았다. 오류가 발생하지 않았는데도 대화 상자를 포함하지 않았습니다.

여기에 내가하고 싶은 것이 간단한 예입니다. 가정하자

난 그냥 당신의 이름은 무엇인가하는 팝업 상자가 물어보고 싶은?

이름이 inputed 후

는 상자가 닫히고, 앱이 시작됩니다. 아마 응용 프로그램은 지금, 안녕하세요 이름을 말합니다.

아래 코드를 업데이트하는 데 도움을주십시오.

library(shiny) 
library(tcltk2) 
library(shinybs) 

#Create pop up box asking name. Then substitute this value into XXX below. 
ui <- shinyUI(fluidPage(

    # Application title 
    titlePanel("Hello XXX, how are you?") 


    ) 
) 

server <- shinyServer(function(input, output) { 


    }) 


# Run the application 
shinyApp(ui = ui, server = server) 
+0

무엇을 의미합니까? – shayaa

+0

난 당신이 http://stackoverflow.com/questions/28987622/starting-shiny-app-after-password-input/28997605#28997605 –

+0

돼지 고기를 다시 쓸 수있는 확신이 도움을했다. 그것은 여전히 ​​날의 더 나은 부분을 데려 갔지만, 나는 그것을 얻었다. 이제 다음 문제로 빠져 나옵니다. 감사!! Shayaa, ShinyBS의 각 예제 링크는 모두 죽었습니다 (404 오류). 링크가 작동하지 않아 어떤 예도 볼 수 없습니다. –

답변

0

완벽을 기하기 위해 여기에 제가 작성한 코드가 있습니다. 이것은 참조 된 Pork Chop 링크에서 수집되었습니다. 나는 아직도 이해하지 못하는 부분이 있지만 작동한다.

library(shiny) 

Logged = FALSE; 

ui1 <- function(){ 
    tagList(
    div(id = "login", 
     wellPanel(textInput("name", "Name"), 
        br(),actionButton("submit", "Submit"))), 
    tags$style(type="text/css", "#login {font-size:10px; text-align: left;position:absolute;top: 40%;left: 50%;margin-top: -100px;margin-left: -150px;}") 
)} 

ui2 <- function(){fluidPage(

    # Application title 
    titlePanel({ 
    fluidRow(column(12, 
      textOutput("greeting"))) 


      }) 

)} 


ui = (htmlOutput("page")) 
server = (function(input, output,session) { 

    USER <- reactiveValues(Logged = Logged) 

    observe({ 
    if (USER$Logged == FALSE) { 
     if (!is.null(input$submit)) { 
     if (input$submit > 0) { 
      Username <- isolate(input$name) 
      if (length(Username) > 0) { 

      USER$Logged <- TRUE 

      } 
     } 
     } 
    }  
    }) 
    observe({ 
    if (USER$Logged == FALSE) { 

     output$page <- renderUI({ 
     div(class="outer",do.call(bootstrapPage,c("",ui1()))) 
     }) 
    } 
    if (USER$Logged == TRUE) 
    { 
     output$page <- renderUI({ 
     div(class="outer",do.call(fluidPage,ui2())) 
     }) 
     print(ui) 
    } 
    }) 

    output$greeting <- renderText({ 
    print(paste("Hello, how are you", " ", input$name,"?", sep = "")) 
    }) 

}) 

runApp(list(ui = ui, server = server)) 
관련 문제