timevis软件包中的响应性:将selectinput变量传递给子组

问题描述

在R中使用timevis包(dean attali),我想用r Shiny中的selectinput小部件按组分别绘制时间轴:错误:无法子集不存在的列。 x列2不存在。有人可以帮忙吗?谢谢

我的代码

library(shiny)
library(timevis)
library(dplyr)



# constructing data frame
pre_data <- data.frame(
  group      = as.integer(c(1,1,2,2)),content = c("Item one","Item two","Ranged item","Ranged item two"),start   = c("2016-01-10","2016-01-11","2016-01-20","2016-02-14"),end     = c(NA,NA,"2016-02-04","2016-05-14")
)

# preparing for timevis
data <- pre_data %>% 
  arrange(group,start) %>% 
  group_by(group) %>% 
  mutate(id = row_number())


ui <- fluidPage(
  # selectinput getting data from dataframe
  selectInput(inputId = "group",label = "group",choices = data$group),timevisOutput("timeline")
)

server <- function(input,output,session) {
  
  # reactive input variable
  var_group <- reactive({input$group})
  
  # 
  output$timeline <- renderTimevis({
    select(data,all_of(c(var_group()))) %>% 
    timevis(data)
  })
}

shinyApp(ui = ui,server = server)

解决方法

那么您想显示包含第1组或第2组内容的时间轴吗?然后,您需要filter的{​​{1}}列;您不能groupselect1列,因为它们不存在,1/2只是2列中的值。

group