如何连接你自己数据的闪亮日期?
how to connect your own data's date in shiny?
我是 R shiny 新手
我正在制作日期输入并尝试连接我自己的数据。
我有称为性能的数据,这里是数据示例
日期 A B
2020-08-01 10 100
2020-09-01 15 250
2020-10-01 16 300
2020-11-01 20 350
我希望我的数据集的日期可以是被动的,但我不太明白我该怎么做。
这是我目前得到的代码。
当我 运行 此代码时,会出现日期范围 select 栏,但如果我按特定日期,它就不起作用。
ui <- fluidPage(
title = "Performance",
dateRangeInput("daterange1", "Date range:",
start = "2020-08-01",
end = "2020-11-01"),
sidebarLayout(
sidebarPanel(
conditionalPanel(
'input.dataset === "performance"',
checkboxGroupInput("show_vars", "Columns in diamonds to show:",
names(performance), selected = names(performance))
),
mainPanel(
tabsetPanel(
id = 'dataset',
tabPanel("diamonds", DT::dataTableOutput("mytable1"))
)
)
)
)
server <- function(input, output) {
filteredData <- reactive({
req(input$dateRange)
peformance[peformance$date>= input$dateRange[1] & peformance$date <= input$dateRange[2],]
})
performance2 = performance[sample(nrow(performance), 1000), ]
output$mytable1 <- DT::renderDataTable({
DT::datatable(performance2[, input$show_vars, drop = FALSE])
})
}
shinyApp(ui, server)
希望这是一个可以帮助您的工作示例。
为了使这项工作正常进行,需要进行一些更正。
首先,dateRangeInput
的 ui
id 是 daterange1
- 我做了这个 daterange
并确保在 server
中是一致的。请注意,这是区分大小写的,因此带有大写“R”的 dateRange
不适用于 daterange
.
我遗漏了条件面板。这可以包括在内,具体取决于您希望行为具有的内容。目前,它永久隐藏了您的 checkBoxGroupInput
.
在 server
中,您的 reactive
表达式应该在日期更改时调用。在这种情况下,它将根据您的日期和样本进行子集化(我试图尽可能多地留在您的代码中)。
要将结果数据合并到您的 datatable
中,您可以将 reactive
表达式称为 filteredData()
。
library(shiny)
ui <- fluidPage(
title = "Performance",
dateRangeInput("daterange", "Date range:",
start = "2020-08-01",
end = "2020-11-01"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("show_vars", "Columns in diamonds to show:",
names(performance), selected = names(performance)
)
),
mainPanel(
tabsetPanel(
id = 'dataset',
tabPanel("diamonds", DT::dataTableOutput("mytable1"))
)
)
)
)
server <- function(input, output) {
filteredData <- reactive({
req(input$daterange)
df <- performance[performance$Date >= input$daterange[1] &
performance$Date <= input$daterange[2], ]
df[sample(nrow(df), 1000, replace = T), ]
})
output$mytable1 <- DT::renderDataTable({
DT::datatable(filteredData()[, input$show_vars, drop = FALSE])
})
}
shinyApp(ui, server)
我是 R shiny 新手
我正在制作日期输入并尝试连接我自己的数据。
我有称为性能的数据,这里是数据示例
日期 A B 2020-08-01 10 100 2020-09-01 15 250 2020-10-01 16 300 2020-11-01 20 350
我希望我的数据集的日期可以是被动的,但我不太明白我该怎么做。
这是我目前得到的代码。 当我 运行 此代码时,会出现日期范围 select 栏,但如果我按特定日期,它就不起作用。
ui <- fluidPage(
title = "Performance",
dateRangeInput("daterange1", "Date range:",
start = "2020-08-01",
end = "2020-11-01"),
sidebarLayout(
sidebarPanel(
conditionalPanel(
'input.dataset === "performance"',
checkboxGroupInput("show_vars", "Columns in diamonds to show:",
names(performance), selected = names(performance))
),
mainPanel(
tabsetPanel(
id = 'dataset',
tabPanel("diamonds", DT::dataTableOutput("mytable1"))
)
)
)
)
server <- function(input, output) {
filteredData <- reactive({
req(input$dateRange)
peformance[peformance$date>= input$dateRange[1] & peformance$date <= input$dateRange[2],]
})
performance2 = performance[sample(nrow(performance), 1000), ]
output$mytable1 <- DT::renderDataTable({
DT::datatable(performance2[, input$show_vars, drop = FALSE])
})
}
shinyApp(ui, server)
希望这是一个可以帮助您的工作示例。
为了使这项工作正常进行,需要进行一些更正。
首先,dateRangeInput
的 ui
id 是 daterange1
- 我做了这个 daterange
并确保在 server
中是一致的。请注意,这是区分大小写的,因此带有大写“R”的 dateRange
不适用于 daterange
.
我遗漏了条件面板。这可以包括在内,具体取决于您希望行为具有的内容。目前,它永久隐藏了您的 checkBoxGroupInput
.
在 server
中,您的 reactive
表达式应该在日期更改时调用。在这种情况下,它将根据您的日期和样本进行子集化(我试图尽可能多地留在您的代码中)。
要将结果数据合并到您的 datatable
中,您可以将 reactive
表达式称为 filteredData()
。
library(shiny)
ui <- fluidPage(
title = "Performance",
dateRangeInput("daterange", "Date range:",
start = "2020-08-01",
end = "2020-11-01"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("show_vars", "Columns in diamonds to show:",
names(performance), selected = names(performance)
)
),
mainPanel(
tabsetPanel(
id = 'dataset',
tabPanel("diamonds", DT::dataTableOutput("mytable1"))
)
)
)
)
server <- function(input, output) {
filteredData <- reactive({
req(input$daterange)
df <- performance[performance$Date >= input$daterange[1] &
performance$Date <= input$daterange[2], ]
df[sample(nrow(df), 1000, replace = T), ]
})
output$mytable1 <- DT::renderDataTable({
DT::datatable(filteredData()[, input$show_vars, drop = FALSE])
})
}
shinyApp(ui, server)