2016-09-23 3 views
0

Ich versuche, eine Tabelle über die Auswahl der Checkbox zu drucken. Das funktioniert gut, aber ich möchte nicht alle Spalten drucken, d. H. Nur "Name" und "Farbe". Leider kann ich keinen Befehl finden, um bestimmte Spalten anzuzeigen. Ich dachte, dass input$color das Problem lösen kann, aber ich konnte das Skript nicht ordnungsgemäß ausführen. Hier ist mein Mindest Beispiel:R Shiny: Tabelle mit ausgewählten Spalten drucken

mydat <- data.table(id=c(1,2,3,4), 
       londd=c(20, 38, 96, 32), 
       latdd=c(60, 56, 30, 31), 
       material=c("stone", "water,sand", "sand", "wood"), 
       application=c("a","b","c","d"), 
       name=c("1","2","3","4"), 
       color=c("red","green","blue","yellow")) 

#Set up ui 
ui <- shinyUI(fluidPage(
sidebarPanel(h5("", width=2), 
     checkboxGroupInput(inputId="MatFlag",label=h4("Material"), 
      choices=setNames(object=c("stone","water","sand", "wood"), 
      nm=c("stone", "water", "sand", "wood")) 
      ), 
      checkboxGroupInput(inputId="AppFlag",label=h4("Application"), 
      choices=setNames(object=c("a","b","c","d"), 
      nm=c("a","b","c","d")) 
      ), 
      position="left"), 

#App mainPanel content and styles 
mainPanel("Plot_and_table","Plot and Table", 
"button_plot_and_table",size="large",dataTableOutput("TestTable")))) 

#Set up server 
server <- function(input, output){ 

#Filter data 
datFilt <- reactive({ 
MatSearch <- paste0(c('xxx',input$MatFlag),collapse = "|") 
MatSearch <- gsub(",","|",MatSearch) 
mydat[grepl(MatSearch,material) & application %in% input$AppFlag] 
}) 

output$TestTable <- renderDataTable({datFilt() 
}, options = list(pageLength=5)) 


} 

#Run app 
shinyApp(ui = ui, server = server) 

Antwort

0

Wenn nur die subsetting alles, was Sie wollen, ist dies in Ordnung sein sollte:

datFilt <- reactive({ 
    MatSearch <- paste0(c('xxx',input$MatFlag),collapse = "|") 
    MatSearch <- gsub(",","|",MatSearch) 
    testdata <- mydat[grepl(MatSearch,material) & application %in% input$AppFlag] 
    testdata[,c("name","color"), with=FALSE] 
    }) 
+0

Ja, das ist der Code, den ich brauche. Danke vielmals! – ChMoe