我想制作一个闪亮的应用程序,以显示按用户选择过滤的表。
这是我认为可行的程序:
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)
但这似乎不起作用,知道我在做什么错吗?
答案 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
,不需要定义的事件,而是可以查找变量的任何更改,这些反应式变量称为函数。 observe
和eventReactivw
是其他反应性环境,除了变量可以返回到主环境外,其工作方式与observeEvent
类似。