作为示例,我将使用 ggplot2 中的内置菱形数据。
我想根据剪切、颜色和清晰度显示数据框。但是,我想通过扣除来选择项目。我想在下拉菜单中选择可用的颜色,等等。
当您想查看另一个项目时,以下方法不会刷新。有没有更简单的方法可以使用 plyr 在闪亮的情况下做到这一点?
钻石数据框可能不是最好的例子,但我找不到任何其他数据。
服务器.R
library(plyr)
dm<-dlply(diamonds, .(cut))
for(x in 1:length(dm)){
assign(eval(parse(text = paste("names(dm)[x]"))),dm[[x]])
}
shinyServer(function(input, output) {
output$choose_cut <- renderUI({
selectInput("cut", "Cut", as.list(names(dm), multiple = TRUE))
})
output$choose_color <- renderUI({
if(is.null(input$cut)) return()
dat <- get(input$cut)
dm2<-dlply(dat, .(color))
for(x in 1:length(dm2)){
assign(eval(parse(text = paste("names(dm2)[x]"))),dm2[[x]], envir = globalenv()
)}
selectInput("color", "Color", as.list(names(dm2)))})
output$choose_clarity <- renderUI({
if(is.null(input$color)) return()
dat <- get(input$color)
dm3<-dlply(dat, .(clarity))
for(x in 1:length(dm3)){
assign(eval(parse(text = paste("names(dm3)[x]"))),dm3[[x]], envir = globalenv())
}
selectInput("clarity", "Clarity", as.list(names(dm3)))
})
output$table <- renderTable({
if (is.null(input$clarity)) return()
dat <- get(input$clarity)
dat
})
})
用户界面
shinyUI(pageWithSidebar(
headerPanel(""),
sidebarPanel(
uiOutput("choose_cut"),
uiOutput("choose_color"),
uiOutput("choose_clarity"),
br()
),
mainPanel(
"Data", tableOutput("table"))))