2017-02-13 8 views
0

光沢のあるアプリに関する質問があります。数値入力とselectizeInputに値の選択がない場合、私の光沢のあるアプリケーションは空のデータフレームのためにエラーを表示します。ユーザーが入力をまだ選択していない場合は、エラーメッセージを非表示にしたいと思います。私はifreturnが役に立ちますが、このアプリでは動作していないようです。Shiny/R:selectizeInputに値がないときにエラーメッセージを表示しない

server.r:

library(shiny) 

# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 

result<-reactive({ 
    if(is.null(input$wt)||is.null(input$hdcount)||is.null(input$season)||is.null(inp ut$gender))return(NULL) 

mod1<-lm(deathLog ~ InHdCnt+ log(InHdCnt) + season+ SexCode+ AvgArrivWt, data=mydata) 
newdata = data.frame(AvgArrivWt=input$wt,InHdCnt=input$hdcount,SexCode=input$gender,season=input$season) 
data<-predict(mod1, newdata, interval="predict",level=(input$slider1)*0.01) 
data 

}) 

output$distPlot <- renderPrint({ 

result() 
}) 

}) 

ui.r:

library(shiny) 

# Define UI for application that draws a histogram 
shinyUI(fluidPage(

# Application title 
titlePanel("Death Loss Estimator with On Arrival Factors"), 

# Sidebar with a slider input for number of bins 
sidebarLayout(
sidebarPanel(
    numericInput("wt", label = h4("Average Arrival Weight input"),value="NULL"), 
    numericInput("hdcount", label = h4("Arrival Head Count input"),value="NULL"), 
    selectizeInput(
    'season', h4('Arrival Season'), choices = c("spring", "summer","fall", "winter"), 
    options = list(
     placeholder = 'Please select a season below', 
     onInitialize = I('function() { this.setValue(""); }') 
    ) 
    ), 
    selectizeInput(
    'gender', h4('Arrival Sex'), choices = c("HOL", "FEM","MAL", "MIX"), 
    options = list(
     placeholder = 'Please select a season below', 
     onInitialize = I('function() { this.setValue(""); }') 
    ) 
    ), 
    sliderInput("slider1", label = h4("Confidence Interval Level"), min = 50, 
       max = 100, value = 80) 
    ), 

    # Show a plot of the generated distribution 
    mainPanel(
    textOutput("distPlot") 
) 
) 
)) 

ありがとう!

+1

'データ= mydata'が助けにはならない:

validate( need(input$wt, "Please select a weight"), need(input$hdcount, "Please select a head count") ) 

はまた、あなたがREQを使用することができます。投稿を編集してコードを再現可能にしてください。 –

+2

'if(is.null(input $)| is.null(input $)| ...){return()}' – Akbar

+1

'?req'が役立つかもしれません。 –

答えて

4

validateとneedを使用することをおすすめします。あなたの反応式の先頭でこれを置くことができます。

req(input$wt) 
req(input$hdcount) 
+0

ありがとう!それは動作します! – Joanna

関連する問題