【发布时间】:2018-11-03 14:23:29
【问题描述】:
参考Using an input from Shiny Widget in Reshape Cast(), 我可以通过单行变量的 Shiny 输入创建动态汇总表。
但是,当我希望创建多个行层列时,我发现找不到第二个或第三个对象。 我试图打印出公式,这似乎是正确的。比如Shiny中选择了“vs”和“hp”,那么公式就变成了“vs + hp~gear”,看起来是对的。但是会出现“object 'hp' not found”的错误。
您能帮我解决这个问题吗? 谢谢!
用户界面:
library(shiny)
library(dplyr)
library(reshape2)
library(DT)
ui <- fluidPage(
headerPanel("Summary Table"),
sidebarPanel(selectInput("row", "Row variable", names(mtcars), selected = "vs", multiple = T),
selectInput("col", "Column variable", names(mtcars), selected = "gear")),
mainPanel(DT::dataTableOutput('table'))
)
服务器:
server <- function(input, output) {
output$table <- renderDataTable({
formula <- as.formula(paste(paste(input$row, collapse = "+"), "~", input$col))
print(formula)
car0 <- mtcars %>%
group_by_(input$row, input$col) %>%
summarize(n = n_distinct(cyl)) %>%
dcast(formula, value.var = "n")
datatable(car0)
})
}
shinyApp(ui, server)
【问题讨论】: