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, ]
?如果我做了以下操作,我得到一個「對象類型'關閉'不可子集」錯誤:
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)
})
})
我做錯了什麼?
感謝您的幫助,我對Shiny非常陌生(這是我第二天使用它)。你的解決方案是有效的,但是當我在我的子集例程中插入一個'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()',這將防止它在沒有數據時試圖繪圖。雖然我正在開發一個閃亮的應用程序,但我喜歡添加一個表格,稍後將被註釋掉,它只會打印不同的調試值(即當前數據中的行數,某個變量的級別等) –