2017-10-05 4 views
1

Je suis en train de développer une application qui permet à l'utilisateur de sélectionner les variables qui sont utilisées dans la «section d'une table de données.Data.table: sélectionnez dynamiquement groupe par des variables en utilisant brillant

Supose l'ensemble de données de mtcars est chargé dans l'application, dans l'interface utilisateur, il y aura une sélection comme:

vector.vars <- c('am', 'gear', 'carb') 
selectInput("vars", "Select variables:", as.list(vector.vars), selected = 'am', multiple = TRUE) 

cette entrée select sera rendu dans l'interface utilisateur et lorsque l'utilisateur sélectionne quelques-unes des variables le serveur sera utilisé comme:

output$table <- renderDataTable({ 
    d <- mtcars[, list(mpg_mean= mean(mpg), by=input$vars] 
    }) 

Dans ce cas, si l'utilisateur a sélectionné « am'and « CARB » les scripts précédents doit effectuer cette opération:

d <- mtcars[, list(mpg_mean= mean(mpg), by=list(am, carb)] 

et montrer la moyenne de 'mpg' pour chaque combinaison de 'am' et 'carb'.

... MAIS le by = input $ vars ne fonctionne pas comme prévu.

Toutes les idées sur la façon dont je peux atteindre la sortie désirée, merci d'avance!

Répondre

1

Ça va le faire:

as.data.table(mtcars)[, .(mpg_mean = mean(mpg)), by = c(input$vars)]