我正在尝试开发一个应用程序,允许用户选择在data.table的"by"部分中使用哪些变量。
假设将mtcars数据集加载到应用程序中,在UI中将有一个选择,例如:
vector.vars <- c('am', 'gear', 'carb')
selectInput("vars", "Select variables:", as.list(vector.vars), selected = 'am', multiple = TRUE)
此选择输入将在 UI 中呈现,当用户选择服务器中的某些变量时,将如下所示:
output$table <- renderDataTable({
d <- mtcars[, list(mpg_mean= mean(mpg), by=input$vars]
})
在这种情况下,如果用户选择了"am"和"carb",则前面的脚本应执行此操作:
d <- mtcars[, list(mpg_mean= mean(mpg), by=list(am, carb)]
并显示"am"和"carb"每种组合的"mpg"平均值。
。但是 by=input$vars 不能按预期工作。
关于如何达到所需输出的任何想法,提前感谢!
这将做到这一点:
as.data.table(mtcars)[, .(mpg_mean = mean(mpg)), by = c(input$vars)]