8
でグローバルオブジェクトを設定しますのは、私はピカピカで、次のserver.Rファイルを持っているとしましょう:はシャイニー
shinyServer(function(input, output) {
output$plot <- renderPlot({
data2 <- data[data$x == input$z, ] # subsetting large dataframe
plot(data2$x, data2$y)
})
output$table <- renderTable({
data2 <- data[data$x == input$z, ] # same subset. Oh, boy...
summary(data2$x)
})
})
私は何をすることができ、すべての描画コール内でdata2 <- data[data$x == input$z, ]
を実行する必要がないようにするためには?私は、次の操作を行う場合、私は取得エラー「型のオブジェクトを 『閉鎖』はsubsettableではありません」:
shinyServer(function(input, output) {
data2 <- reactive(data[data$x == input$z, ])
output$plot <- renderPlot({
plot(data2$x, data2$y)
})
output$table <- renderTable({
data2 <- data[data$x == input$z, ]
summary(data2$x)
})
})
私が間違って何をしたのですか?
助けてくれてありがとう、私は光沢がとても新しいです(それは私の2日目の作業です)。あなたのソリューションは動作しますが、私のサブセットルーチンの中に 'ifelse()'を挿入していないときは、実際にはこのようになります: 'data2 < - reactive(ifelse(input $ z == ''、data、data [data $ x ==入力$ z、])) '。これを行うと、次のエラーが表示されます。 'plot.windowのエラー(xlim、ylim、log = log、...):有限のxlim値が必要です。 –
ところで、私はRStudioチュートリアル(少なくとも基本的な部分)を終えて、それを深く掘り下げ、パッケージドキュメントを時間をかけて掘り下げようと考えています。 –
@wleoncioでは、空の 'data.frame'をプロットするため、エラーはほぼ確実です。ですから、 'data2'が期待しているものを返すかどうか調べるためにデバッグを行うことをお勧めします。 'if(nrow(newData)== 0)return()'のようなプロット出力関数でチェックを追加して、データがない場合にプロットしようとしないようにすることもできます。私は光沢のあるアプリケーションに取り組んでいますが、後でコメントアウトするためにテーブルを追加するのが好きです。異なるデバッグ値(現在のデータの行数、特定の変数のレベルなど)だけを出力します。 –