I have created a summary table from iris data set and when i select any row from that datatable
I want to use the row selected to subset main data and later publish that subset data as a datatable
.
library(shiny)
library(dplyr)
library(DT)
setwd("C:/Users/143812/Documents/Shiny")
df <- iris
vchoices <- colnames(df)
ui <- fluidPage(h1("PLOT FOR NOW"),
sidebarLayout(sidebarPanel(
fluidPage(
column(10,selectInput(inputId = "group",label = "Group BY",choices = vchoices)),
column(10,selectInput(inputId = "operator",label = "OPERATOR",choices = c("sum","mean"),selected = "sum")),
column(10,uiOutput("operateUI"))
)
),
mainPanel(dataTableOutput("summarytable"),dataTableOutput("drilldata")))
)
server <- function(input,output,session){
df1 <- reactive({df %>% group_by_(input$group) %>% summarise(Result = get(input$operator)(get(input$operate)))})
#input for integer and numeric columns
a <- (sapply(df,class))
lv <- a=="integer" | a=="numeric"
b <- a[lv]
numchoice <- names(b)
output$operateUI <- renderUI({
selectInput(inputId = "operate",label = input$operator,choices = numchoice)
})
#publish summary table to select output from by name summary table
output$summarytable <- DT::renderDataTable(df1())
#create data for drill report
drilldata <- reactive({
shiny::validate(need(length(input$summarytable_rows_selected) > 0, "Select Rows to drill down")
)
selected_column <- df1[as.integer(input$summarytable_rows_selected),]$get(input$group)
df[df$get(input$group) %in% selected_column, ]
})
output$drilldata <- DT::renderDataTable(drilldata())
#function end
}
shinyApp(ui,server)
This code gives me error: object of type 'closure' is not subsettable. I'm asking the user to select the column for group by and operation to be performed, either sum or mean as well as the column on which the operation is to be performed. This method seems to work in this code by mlegge where the values are predefined and not asked from user. link to question