timevis包中的r反应性:将selectinput变量传递给子群



使用R中的timevis包(dean-attali(,我想用R中的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您的group列;不能select12,因为它们不存在,1/2只是group列中的值。

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({
req(var_group())
data %>% 
filter(group == as.integer(var_group())) %>% 
timevis()
})
}
shinyApp(ui = ui, server = server)

最新更新