微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用日期的闪亮树复选框

如何解决使用日期的闪亮树复选框

我正在尝试使用类似于下图的日期创建一个分支复选框输入。

enter image description here

最终选择将是来自先前选择的名称的独特观察结果。每个名称都可以有很多观察结果,因此我希望能够使用日期来选择特定的观察结果。我当前代码的示例如下。我可以根据名称更新复选框输入以显示名称的所有观察结果。

ui.r

library(shiny)
library(dplyr)

shinyUI(
    fluidPage(
        navbarPage(inverse = TRUE,tabPanel("Page Title",sidebarPanel(width = 4,selectizeInput("Name",label = "Name",choices = sort(unique(mydata$Name))
                                         ),checkBoxGroupInput("Observation",label = "Observation",choices = sort(unique(mydata$Observation))
                                         )
                            ),mainPanel(
                                tableOutput("RepDimTable")
                            ))
                   
        )))

server.r

library(shiny)
library(dplyr)

shinyServer(function(input,output,session){
    
    dat <- reactive({
        
        d <- mydata %>%
            filter(Name == input$Name)
        
        updateCheckBoxGroupInput(session,"Observation",choices = unique(d$Observation))
        
        d
        
    })
    
    
    output$RepDimTable = renderTable({

        repDimReactive = dat()   %>%
            filter(Observation %in% input$Observation) %>%
            select(Observation,Date,Name,Colour,score)
        
        repDimReactive
        
    })
})

我不确定如何从日期和观察列创建分支复选框。我尝试过 shinytree 解决方案,但不知道如何将日期和观察结果嵌套到可用的列表形式中。

数据

mydata <- structure(list(Observation = 1:8,Date = c("2020-12-01","2020-12-01","2021-01-01","2021-01-15","2021-01-15"),Name = c("Bob","Fred","George","Bob","George"),score = c(1L,4L,1L,2L,3L,1L),Colour = c("Red","Blue","Green","Red"),Year = c(2020L,2020L,2021L,2021L),Month = c(12L,12L,Day = c(1L,15L,15L)),row.names = c(NA,8L),class = "data.frame",na.action = structure(9:22,.Names = c("9","10","11","12","13","14","15","16","17","18","19","20","21","22"),class = "omit"))

解决方法

我找到了从日期创建闪亮树的解决方案。代码如下。我还没有弄清楚如何根据日期输入过滤反应式 df,但代码回答了原始问题。数据同上。

mydata = mydata %>%
    mutate(Year = factor(Year),Month = factor(Month),Day = factor(Day))

treelist = list()

library(dplyr)
library(shiny)
library(shinyTree)

ui <- shinyUI(
    fluidPage(
        navbarPage(inverse = TRUE,tabPanel("Page Title",sidebarPanel(width = 4,selectizeInput("Name",label = "Name",choices = sort(unique(mydata$Name))
                                         ),shinyTree("tree")
                            ),mainPanel(
                                tableOutput("RepDimTable")
                            ))
                   
        )))


server <- shinyServer(function(input,output,session){
    
    dat <- reactive({
        
        d <- mydata %>%
            filter(Name == input$Name)
        
        for (j in unique(d$Year)) {
            tmp <- d[d$Year == j,]
            subtreelist <- list()
            for (i in unique(tmp$Month)) {
                childs <- as.list(rep("",length(tmp[tmp$Month == i,1])))
                names(childs) <- tmp[tmp$Month == i,"Day"]
                subtreelist[[i]] <- childs
            }
            treelist[[j]] <- subtreelist
        }
        
        updateTree(session,treeId = ("tree"),data = treelist)
        
        d
        
    })
    
    output$tree <- renderTree({
        treelist
    })
    
    
    output$RepDimTable = renderTable({
        
        repDimReactive = dat()   %>%
            filter(Observation %in% input$Observation) %>%
            select(Observation,Date,Name,Colour,Score)
        
        repDimReactive
        
    })
    
})


shinyApp(ui = ui,server = server)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?