子集存储为反应式表达式eventReactive的数据框的列

时间:2017-09-11 07:30:22

标签: r shiny reactive-programming

原谅不可复制的例子。理论上的解决方案会很好。我想知道如何将存储在特定列的反应式表达式中的数据框子集,为其分配唯一的output_id,并最终显示在UI 中。这类似于访问数据帧的列,如下所示:df$column_name

我使用data()将数据框存储为名为eventReactive()的反应式表达式,该表达式与UI中的actionButton()相关联。

环境代码:

# dataframe with n columns and k rows
df 

UI:

actionButton(inputId = "go", label = "Update")

服务器

# create a reactive expression 'data()', a subsetted data.frame based on other reactive values

data() <- eventReactive( input$go, { df %>% filter(based on other reactive values) } )

output$output_id <- renderSomething( { code depends on data()$specific column })

1 个答案:

答案 0 :(得分:1)

可能是以下示例回答您的所在。 UI具有多选列表,列表的条目可用于对Species数据集的iris列进行子集化。

# Using multi select list to sum columns
library(shiny)
library(dplyr)
# Define UI for application that draws a histogram
ui <- fluidPage(
  # Application title
  titlePanel("Subset and sum a column of iris"),
   fluidRow(
     selectInput('Species', 'Species', levels(iris$Species), multiple = TRUE, selectize = FALSE)
   ),
   fluidRow(verbatimTextOutput('selection')),
  fluidRow(tableOutput('dataColumn')),
  fluidRow(
    tags$h2("sum:"),
    verbatimTextOutput('sum')
  )
)

# Define server logic required to draw a histogram
server <- function(input, output) {
  output$selection <- reactive(input$Species)
  subiris = reactive({
    subset(iris, Species %in% input$Species)
  })
  output$dataColumn <- renderTable(subiris()$Sepal.Length)
 output$sum <- renderPrint(sum(subiris()$Sepal.Length)) 
} 


# Run the application 
shinyApp(ui = ui, server = server)