r Кнопка блестящего действия и таблица данных выводят последние N строк - PullRequest
2 голосов
/ 06 апреля 2020

Мне нужна помощь с кнопкой действия, работающей только один раз. Если вы нажмете кнопку, она покажет вам график, таблицу и текст. Но если вы хотите что-то изменить на боковой панели, например, цвет, он изменится, и вам не нужно нажимать кнопку ... (Мне нужно иметь: если вы хотите изменить что-то цвет, значения .., вам всегда нужно pu sh кнопка действия, чтобы подтвердить это, это не может измениться без кнопки) Кроме того, мне нужно показать только последние N строк из таблицы airquality, которая зависит от numericID ввода. Может кто-нибудь мне помочь?

library(shiny)

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

  observeEvent(input$gobutton, {
    output$textik <- renderText({
      vypis=c("Zobrazili ste tabuľku s", input$numericID, "riadkami a boxplot pre atribút Ozone ste nastavili na farbu ", input$radioID)
      print(vypis)
    })

    output$table <- renderTable(airquality)

    output$distPlot <- renderPlot({
      x    <- airquality[,input$selectID]
      boxplot(x~airquality$Month,  col = input$radioID, border = 'white', main=input$textID)
    })
  })

})

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

  # Application title
  titlePanel("Dáta Airquality"),

  # Sidebar with a slider input for number of bins
  sidebarPanel(
    numericInput("numericID","PoÄet riadkov tabuľky",value=6, min=1, max=100, step=5),
    selectInput("selectID","Vyberte atribút",choices=c(colnames(airquality))),
    radioButtons("radioID","Vyberte farbu grafu", choices=c("yellow","green")),
    textInput("textID","Zadajte nadpis grafu", value ="Nadpis"),
    actionButton("gobutton","Start")
  ),

  # Show a plot of the generated distribution
  mainPanel(           
    plotOutput("distPlot"),
    tableOutput("table"),
    textOutput("textik")
  )

))

1 Ответ

0 голосов
/ 06 апреля 2020

@ Томаш - я бы рекомендовал не помещать ваши output утверждения в observeEvent. Вместо этого я бы создал eventReactive, который будет вызван вашей кнопкой действия. И когда это произойдет, он сохранит всю необходимую информацию в списке, и все ваши результаты будут зависеть от этого списка. Вот один из способов сделать это (ниже только функция server).

server <- function(input, output) {

  aq_data <- eventReactive(input$gobutton, {
    list(data = airquality, nID = input$numericID, rID = input$radioID, sID = input$selectID, tID = input$textID)
  }) 

  output$textik <- renderText({
    vypis=c("Zobrazili ste tabuľku s", aq_data()[["nID"]], "riadkami a boxplot pre atribút Ozone ste nastavili na farbu ", aq_data()[["rID"]])
    print(vypis)
  })

  output$table <- renderTable(tail(aq_data()[["data"]], aq_data()[["nID"]]))

  output$distPlot <- renderPlot({
    dat <- aq_data()
    boxplot(reformulate("Month", dat[["sID"]]), col = dat[["rID"]], border = 'white', main = dat[["tID"]], data = dat[["data"]])
  })

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...