Powiedzmy mam następujący plik server.R w błyszczące:Ustaw globalny obiekt w błyszczące
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)
})
})
Co mogę zrobić, aby nie uruchomić data2 <- data[data$x == input$z, ]
w każdym wywołaniu uczynić? Jeśli I wykonaj następujące czynności, pojawia się „obiekt typu«zamknięcie»nie jest subsettable” Błąd:
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)
})
})
Co zrobiłem źle?
Dzięki za pomoc, jestem bardzo nowy w Shiny (to mój drugi dzień z nim pracuje). Twoje rozwiązanie działa, ale nie wtedy, gdy wstawiam 'ifelse()' wewnątrz mojej procedury podzbioru, która jest w rzeczywistości czymś takim: 'dane2 <- reaktywne (ifelse (wejście $ z == '', dane, dane [dane x == input $ z,])) '. Kiedy to zrobię, pojawia się następujący błąd: 'Błąd w plot.window (xlim, ylim, log = log, ...): potrzebuję skończonych wartości 'xlim'. –
BTW, mam już za sobą samouczek RStudio (przynajmniej podstawowe części) i zamierzam zagłębić się w to i dokumentacji pakietu z czasem. –
@wleoncio ten błąd jest prawie na pewno dlatego, że przekazujesz puste 'dane.frame' do wykreślenia. Sugerowałbym wykonanie debugowania, aby dowiedzieć się, czy 'data2' zwraca to, czego się spodziewasz. Można również dodać kontrole w funkcji wyjściowej wydruku, takie jak 'if (nrow (newData) == 0) return()', która uniemożliwi jej wykreślenie, jeśli nie ma danych. Podczas gdy pracuję nad błyszczącą aplikacją, lubię dodawać tabelę, aby później zostać zakomentowana, która po prostu wydrukuje różne wartości debugowania (np. Liczba wierszy w bieżących danych, poziomy pewnej zmiennej itp.) –