2017-08-19 6 views
0

ここに私の問題を説明する簡単なアプリがあります。デフォルト値を指定せずにselectizeInputを使用すると、メインパネルは単にエラーメッセージを表示します。何も選択しなければ空のプロットが必要です。コードを変更するにはどうすればよいですか?何もselectizeInputに選択されていない場合、あなたが不正な構文で文字列mtcars$eval(parse())を呼び出すようrinyuアプリで指定されたselectizeInputのデフォルト値がないときのエラーメッセージ

library(shiny) 
library(datasets) 


ui <- fluidPage(

    sidebarLayout(
     sidebarPanel(
      selectizeInput('var', 'choose variable', 
          choices = names(mtcars), 
          options = list(
           placeholder = 'Please select an option below', 
           onInitialize = I('function() { this.setValue(""); }')) 
          ) 

     ), 
     mainPanel(
      plotOutput('hist') 
     ) 
    ) 

) 


server <- function(input, output) { 

    output$hist <- renderPlot ({ 
     hist (eval(parse(text=(paste0('mtcars$', input$var))))) 
    }) 
} 

shinyApp(ui, server) 

答えて

1

は、入力の値は、""です。 eval(parse())は使用しないでください。ヒストグラムをプロットしようとする前に入力値を検証してください。サーバーに:あなたがメッセージを表示したくない場合は

output$hist <- renderPlot ({ 
    validate(need(input$var, 'Choose a variable!')) 
    hist(x = mtcars[[input$var]]) 
}) 

、あなただけhistを呼び出す前にreq(input$var)を行うことができます。

+0

ありがとうございます!次の質問:変数にアクセスするために二重角括弧が必要な理由 – zesla

+0

あなたの問題を解決したら、私の答えを受け入れてください。 data.frameサブセットの場合、data.framesの名前はlistなので、 '$'や '[[' 'listのように要素にアクセスすることができます。あなたは 'mtcars [、iput $ var]'を実行することもできます。このチートシートを見てください。http://github.com/rstudio/cheatsheets/raw/master/source/pdfs/base-r.pdf – Victorp

関連する問題