2017-09-11 1 views
1

Vergeben Sie das nicht reproduzierbare Beispiel. Eine theoretische Lösung wird gut funktionieren. Ich möchte wissen, , wie ein Dataset in einem reaktiven Ausdruck für eine bestimmte Spalte, eine eindeutige output_id zugeordnet zugeordnet werden, und schließlich in der UI angezeigt. Dies ist analog eine Spalte einer Datenrahmen wie so auf dem Zugriff: df$column_nameSubset a Spalte eines als reaktiver Ausdruck gespeicherten Datenrahmens eventReactive


I Speicher einen Datenrahmens als reaktiven Ausdruck data() unter Verwendung eventReactive() genannt, die mit einem actionButton() in der Benutzeroberfläche verbunden ist.

-Code in Umwelt:

# dataframe with n columns and k rows 
df 

UI:

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

SERVER:

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

Antwort

1

folgende exampl sein kann e beantwortet, was Sie suchen. Die UI hat eine Mehrfachauswahlliste, die Einträge der Listen können verwendet werden, um die Species Spalte der iris Datenmenge zu unterteilen.

# 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

Vielen Dank für Ihre Antwort, aber das ist nicht genau das, was ich frage. In Ihrem Beispiel möchte ich in output $ subdata <- renderTable (data()) 'nicht ** all ** der gefilterten Daten aufrufen. Ich will nur ** eine Spalte ** der gefilterten Daten, etwas wie 'data() $ SepalLength'. Ich muss wissen, wie man 'data()' für ** nur diese eine Spalte ** untergliedert. –

+1

Ich habe die Lösung aktualisiert, hoffe, das funktioniert für Sie. –

+0

Ausgezeichnet. Es ist wirklich so einfach wie ein $ dann zu verwenden? –

Verwandte Themen