2017-07-11 12 views
1

私はShinyを使い慣れていませんが、UIとshinyServerの間で多くのやりとりが必要なアプリケーションに取り組んでいます。これを行うために、私は動的なrenderUI関数に慣れてきました。しかし、私はrenderUI関数を通してUIに送られる入力を正しく扱ういくつかの問題を抱えています。RのrenderUIからの入力にアクセスする際に問題が発生Shiny

私は問題のクイックおもちゃの例をコーディングしました。

library(shiny) 

ui <- fluidPage(
numericInput("cat.count", "How many cats do you have?", min = 0, value = 0), 
checkboxInput('pet.check',"Do you other pets?", value = FALSE), 
uiOutput("dog.input"), 
uiOutput("dog.num") 
) 

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

output$dog.input <- renderUI({ 
if(input$pet.check){ 
    return(checkboxInput("dog.check", "Do you have dogs?", value = FALSE)) 
} 
}) 
output$dog.num <- renderUI({ 
if (exists("input$dog.check") & input&dog.check){ 
    return(numericInput("dog.count", "How many dogs do you have?", min = 1, 
value = 0)) 
} 

}) 

}) 

shinyApp(ui = ui,server = server) 

このおもちゃのアプリがエラーなしで実行すると、「最終製品」は、ユーザが所有するペットの合計数を示すggplot2グラフィックとgeom_barを経由して、単純な棒グラフになります。

私はreq()関数とexists()関数に加えてreactive関数もたくさん調べてきましたが、これまではサークルで実行していました。

ありがとうございます!

答えて

3

この作品のようなものはありますか?

rm(list = ls()) 
library(shiny) 

ui <- fluidPage(
    numericInput("cat.count", "How many cats do you have?", min = 0, value = 0), 
    checkboxInput('pet.check',"Do you other pets?", value = FALSE), 
    uiOutput("dog.input"), 
    uiOutput("dog.num") 
) 

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

    output$dog.input <- renderUI({ 
    if(is.null(input$pet.check)){return()} 
    if(input$pet.check){ 
     return(checkboxInput("dog.check", "Do you have dogs?", value = FALSE)) 
    } 
    }) 
    output$dog.num <- renderUI({ 
    if(is.null(input$dog.check)){return()} 
    numericInput("dog.count", "How many dogs do you have?", min = 1, value = 0) 

    }) 

}) 
runApp(list(ui = ui, server = server)) 

enter image description here

+0

正確には私が心に留めていたものではありませんでしたが、あなたのコードは非常に助けになりました。ありがとう、ポークチョップと@グレゴール – kfurlong

0

あなたはR

A(x) & B(x) 

のような文を入力すると、AB両方がA(x)が間違っている場合でも、評価を受けます。これがあなたのエラーの原因です。したがって、ifというネストされたステートメントは、ポークチョップの答えに似ています。

関連する問題