根据观察事件的数据帧输出表

时间:2018-10-18 19:01:22

标签: r shiny shinydashboard

我想制作一个闪亮的应用程序,以显示按用户选择过滤的表。

这是我认为可行的程序:

library(shiny)
library(rhandsontable)
library(ggplot2)

ui <- fluidPage(

  mainPanel(

    radioButtons('option','class',choices = c('suv','compact') ),

    tableOutput('table')

  )

)

server <- shinyServer(function(input, output) {

observeEvent(input$w, {

 ifelse(input$option =='compact',

         sp.1. <- subset(mpg, class='compact'),

          ifelse(input$option =='suv',

            sp.1 <- subset(mpg, class='compact'),

              sp.1 <- mpg)

         )

  })

  output$table <- renderTable({(sp.1)}) 
  })

shinyApp(ui, server)

但这似乎不起作用,知道我在做什么错吗?

1 个答案:

答案 0 :(得分:-1)

observeEvent()不返回任何对象,并充当隔离的环境,这就是为什么您没有得到sp.1的原因。将observeEvent视为不允许返回参数的函数。为了解决这个问题,只需将output$table放在observeEvent环境中,以便它可以访问sp.1.。

请注意,我不知道input$w是什么,但是我使用标有“ w”的操作按钮触发了watchEvent进行了测试。

server <- shinyServer(function(input, output) {

  observeEvent(input$w, {

     ifelse(input$option =='compact',

       sp.1. <- subset(mpg, class='compact'),

       ifelse(input$option =='suv',

              sp.1 <- subset(mpg, class='compact'),

              sp.1 <- mpg)

    )

    output$table <- renderTable({(sp.1)}) 
  })

  })



shinyApp(ui, server)

observeEvent本身是一种反应性环境,它基于触发器(事件)更新值。其他反应式环境,例如reactive,不需要定义的事件,而是可以查找变量的任何更改,这些反应式变量称为函数。 observeeventReactivw是其他反应性环境,除了变量可以返回到主环境外,其工作方式与observeEvent类似。