2017-09-11 1 views
1

Pardonnez l'exemple non reproductible. Une solution théorique fera l'affaire. Je veux savoir comment sous-ensemble une base de données stockée dans une expression réactive pour une colonne particulière, à attribuer un unique output_id, et finalement affiché dans l'interface utilisateur. Ceci est analogue à accéder à une colonne d'une trame de données comme ceci: df$column_nameSous-ensemble a Colonne d'une image stockée en tant qu'événement d'expression réactiveRéactif


je stocke une trame de données en tant que réactif appelé expression data(), en utilisant eventReactive() qui est liée à un actionButton() dans l'interface utilisateur.

code dans l'environnement:

# dataframe with n columns and k rows 
df 

UI:

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

SERVEUR:

# 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 }) 

Répondre

1

peut être le suivant exampl e répond à ce que vous cherchez. L'interface utilisateur a une liste de sélection multiple, les entrées des listes peuvent être utilisées pour sous-ensembles de la colonne Species du jeu de données 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) 
+0

merci pour votre réponse, mais ce n'est pas exactement ce que je demande. Dans votre exemple, dans 'output $ subdata <- renderTable (data())', je ne veux pas appeler ** tout ** des données filtrées. Je veux seulement ** une colonne ** des données filtrées, quelque chose comme 'data() $ SepalLength'. J'ai besoin de savoir comment sous-traiter 'data()' pour ** seulement cette colonne **. –

+1

J'ai mis à jour la solution, j'espère que cela fonctionne pour vous. –

+0

Excellent. C'est vraiment aussi simple que d'utiliser un $ alors? –