【发布时间】:2016-08-24 14:56:32
【问题描述】:
我可以创建一个闪亮的数据表,显示任何个体水牛的数据,但我不知道如何同时显示所有水牛数据。任何帮助表示赞赏。
样本数据:
cleanbuffalo <- data.frame(name = c("queen","toni","pepper"),
longitude = c(31.8,32,33),
latitude = c(-24,-25,-26))
闪亮的用户界面:
shinyUI(navbarPage("Buffalo Migration", id ="nav",
tabPanel("Data",
fluidRow(
column(3,
selectInput("allnamesbuffalo", "Buffalo", c("All Buffalo" = "all buffalo", vars))
)
),
hr(),
DT::dataTableOutput("buffalotable")
)
)
)
闪亮的服务器:
shinyServer(function(input, output, session) {
observe({
allnamesbuffalo <- if (is.null(input$allnamesbuffalo)) character(0) else {
filter(cleanbuffalo, name %in% input$allnamesbuffalo) %>%
`$`('name') %>%
unique() %>%
sort()
}
})
output$buffalotable <- DT::renderDataTable({
df <- cleanbuffalo %>%
filter(
cleanbuffalo$name == input$allnamesbuffalo,
is.null(input$allnamesbuffalo) | name %in% cleanbuffalo$name
)
action <- DT::dataTableAjax(session,df)
DT::datatable(df, options = list(ajax = list(url = action)),
escape = FALSE)
})
})
【问题讨论】:
-
这个想法是,当用户选择
all buffalo时,name 变量应该包含所有水牛名称的列表,否则它只包含特定的水牛名称。您可以在过滤器之前使用 if/else 计算names变量。 -
您介意更具体一点吗?我认为我需要根据使用 if/else 的用户选择来更新名称变量。但是,当我尝试更改名称变量以包括所有水牛选择中的所有水牛名称时,我得到错误。感谢您的帮助。