繁体   English   中英

闪亮的仪表板

[英]Shiny Dashboard

我是R的初学者,正在从事一个小项目。 有没有一种方法可以将两个过滤器应用于闪亮的数据帧? 我正在处理具有多个列的数据框,例如医学专家,城市等。在专家列中有不同类型的专家(Ortho,Periodontist等),我试图在闪亮的仪表板上获得输出,以便进行过滤同时由城市和专家提供数据。 或仪表板上的两个过滤器,这样我首先按城市过滤,然后应用专家过滤器。 输出将为我提供该城市中所有专家的列表(ortho,perio或其他)。

这是我正在处理的示例代码。 提前致谢。

output$origin <- renderUI({
    options <- sort(unique(city.df$specialist))
    selectInput("city","Select Specialist",as.list(options))

我不确定您要实现什么。

根据两个或多个选定的输入来切片data.frame相当简单。

另一方面,在代码片段中,您引用了闪亮的函数renderUI ,该函数用于服务器端函数。 这是发亮的最有趣的方面之一,但与反应性一起是新手最难掌握的方面之一。

这是一个没有renderUI的简单示例(故意在格式等方面保持简单):

library(shiny)

city <- c('London','Tokio','New York')
specialist <- c('ortho', 'perio','gyne', 'rhino')
df <- expand.grid(city = city, specialist = specialist)

opt_specialist <- sort(unique(df$specialist))
opt_city <- sort(unique(df$city))

ui <- fluidPage(
  selectInput("spec","Select Specialist",opt_specialist),
  selectInput("city","Select City",opt_city),
  verbatimTextOutput('city_'),
  verbatimTextOutput('spec_')

)

server <- function(input, output, session) {

  output$city_ <- renderText({input$city})
  output$spec_ <- renderText({input$spec})

}

shinyApp(ui = ui, server = server)  

下面的示例使用服务器端编程。 除非结合更复杂的服务器端操作,否则使用它本身没有多大意义。

library(shiny)

city <- c('London','Tokio','New York')
specialist <- c('ortho', 'perio','gyne', 'rhino')
df <- expand.grid(city = city, specialist = specialist)
opt_specialist <- sort(unique(df$specialist))
opt_city <- sort(unique(df$city))

ui <- fluidPage(
  uiOutput("origin"),
  verbatimTextOutput('city_'),
  verbatimTextOutput('spec_')

)

server <- function(input, output, session) {

  output$origin <- renderUI({

    list(
    selectInput("spec","Select Specialist",opt_specialist),
    selectInput("city","Select City",opt_city)
    )
  })

  output$city_ <- renderText({input$city})
  output$spec_ <- renderText({input$spec})

}

shinyApp(ui = ui, server = server)

如果我错过了任何事情,请编辑或扩展您的帖子,然后我将相应地修改回复。

您可以执行两个选择,最简单的是:

使用DT包并在表中对其进行过滤:

iris2 = iris[c(1:10, 51:60, 101:110), ]
datatable(iris2, filter = 'top', options = list(
  pageLength = 5, autoWidth = TRUE
))

多数民众赞成在DT网站上的示例: https//rstudio.github.io/DT/

否则,您将不得不使用表的选择创建两个selectInput小部件,然后在server.R过滤数据集:

data_filt <- reactive({
        if (input$select1 != "..."){
        data <- data[data$column1 %in% input$select1,]
        }
        if (input$select2 != "..."){
        data <- data[data$column2 %in% input$column2,]
        }
data})

大概在理想的世界中,您需要UI能够首先允许通过两个变量中的任何一个进行选择,然后将后续变量的下拉列表限制为第一个子集返回的值的范围吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM