timevis 包中的反应性:将 selectinput 变量传递给子组
reactivity in timevis package: passing selectinput variable to subgroup
在 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
你的 group
列;您不能 select
列 1
或 2
因为它们不存在,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)
在 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
你的 group
列;您不能 select
列 1
或 2
因为它们不存在,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)