Ich baue eine App mit einer Upload-Funktion und einer Filterfunktion für Kategorievariablen. Auf diese Weise können Benutzer ein wenig Daten manipulieren, indem sie Spalten und Werte angeben. Die Filterfunktion funktioniert jedoch nicht. Der Code wird vereinfacht wie folgt:Wie erstellt man einen dynamischen Filter in R Shiny?
#ui.R
library(shiny)
fluidPage(
titlePanel("Test Dynamic Column Selection"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),
hr(),
checkboxInput('header', 'Header', TRUE),
radioButtons('sep', 'Separator',
c(Comma=',',
Semicolon=';',
Tab='\t'),
','),
hr(),
uiOutput("choose_columns"),
hr(),
uiOutput("choose_column"),
textInput('column_value', label = 'Value'),
actionButton('filter', label = 'Filter')
),
mainPanel(
tableOutput('contents')
)
)
)
#server.R
library(shiny)
function(input, output) {
uploaded_data <- reactive({
inFile <- input$file1
read.table(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote)
})
react_vals <- reactiveValues(data = NULL)
output$choose_columns <- renderUI({
if(is.null(input$file1))
return()
colnames <- names(react_vals$data)
checkboxGroupInput("choose_columns", "Choose columns",
choices = colnames,
selected = colnames)
})
output$choose_column <- renderUI({
if(is.null(input$file1))
return()
is_factor <- sapply(react_vals$data, is.factor)
colnames <- names(react_vals$data[, is_factor])
selectInput("choose_column", "Choose column", choices = colnames)
})
observeEvent(input$file1, react_vals$data <- uploaded_data())
observeEvent(input$choose_columns, react_vals$data <- react_vals$data[, input$choose_columns])
# This line of code does not work :(
observeEvent(input$filter, react_vals$data <- subset(react_vals$data, input$choose_column != input$column_value))
output$contents <- renderTable(react_vals$data)
}
Haben Sie einen Fehler? Welcher Filter funktioniert nicht: 'actionButton ('filter', label = 'Filter')'? Auf der [Hilfeseite] (http://shiny.rstudio.com/reference/shiny/latest/actionButton.html) finden Sie Informationen dazu, wie Sie es verwenden können. – Llopis
Es wurden keine Fehler empfangen. Sie haben keine Antwort erhalten, nachdem Sie auf die Aktionsschaltfläche geklickt haben. – tonykuoyj
Es scheint, Sie müssen die Aktion innerhalb '{}', [siehe hier] (http://shiny.rstudio.com/reference/shiny/latest/observeEvent.html), und vermeiden Sie die Zuweisung – Llopis