2016-07-25 7 views
0

ポップアップダイアログボックスで質問をしたいところに質問をし、質問に答えて、ボックスを消してから、自分のアプリケーションを実行させるというアプリがあります。Shinyのポップアップボックスを作成して入力データを取得するにはどうすればよいですか?

私は1週間以上を検索し、多くのことを無駄にしようとしました。私はちょうどreadline()を試しました。私はShinyBSを見てきましたが、例のどれも機能していません。私はtcltk2を調べました。私は何の誤りもなかったが、何もダイアログボックスを含まないことが起こった。

ここに私がしたいことの簡単な例があります。

私はちょうどポップアップボックスに「あなたの名前は何ですか?

名前を入力すると、ボックスが閉じてアプリが起動します。おそらくアプリは今、こんにちは名前を言う。

以下のコードを更新してもよろしいですか?

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

ポークチョップ、これは助けになりました。それでも私は今日のより良いところを取ったが、私はそれを得た。今すぐ次の問題に挑戦してください。ありがとう!!シャヤ、ShinyBSの各例へのリンクはすべて死んでいる(404エラー)。リンクが機能していないので、例は見えません。 –

答えて

0

完全性のために、ここに私が書いたコードがあります。これは参照されたリンクから収集されました。私はまだ理解していない部分がありますが、動作します。

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)) 
関連する問題