`data` 必须是数据框,或其他可被 `fortify()` 强制转换的对象,而不是逻辑向量
`data` must be a data frame, or other object coercible by `fortify()`, not a logical vector
我正在尝试在 R Shiny 中制作一个仪表板。但我不断收到错误消息,无法弄清楚如何解决这个问题。
错误:
data
must be a data frame, or other object coercible by fortify()
, not a logical vector
有人可以帮忙吗?谢谢!
library(shiny)
library(shinydashboard)
library(tidyverse)
library(lubridate)
KPI1_shiny <- structure(list(J = c("2017", "2017", "2017", "2017", "2017", "2017"), M = c("01", "02", "03", "04", "05", "06"), Ordermaand = structure(c(17167, 17198, 17226, 17257, 17287, 17318), class = "Date"), AantalProducten = c(706L, 644L, 727L, 724L, 787L, 1018L)), row.names = c(NA, 6L), class = "data.frame")
ui <- dashboardPage(
dashboardHeader(title = "Dashboard by: Bjorn"),
dashboardSidebar(
sidebarMenu(
menuItem("KPI1", tabName = "KPI1", icon = icon("th")),
menuItem("KPI2", tabName = "KPI2 | ", icon = icon("th")),
menuItem("Dashboard", tabName = "KPI7", icon = icon("chart-bar")),
menuItem("Widgets", tabName = "KPI9", icon = icon("th")))
),
dashboardBody(
tabItems(
# KPI 1 Aantal verkochte producten binnen een tijdsperiode----------------------------------------------------------------------------------------------------
tabItem(tabName = "KPI1",
fluidRow(
box(title = "Begindatum",
selectInput(
inputId = "Beginjaar", label = "Beginjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Beginmaand", label = "Beginmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(title = "Einddatum",
selectInput(
inputId = "Eindjaar", label = "Eindjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Eindmaand", label = "Eindmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(plotOutput("iPlot1"))
)
)
)
))
server <- function(input, output) {
v <- reactiveValues(value = NULL)
observe({
v$Begin <- make_date(input$Beginjaar, input$Beginmaand)
v$Eind <- make_date(input$Eindjaar, input$Eindmaand)
})
output$iPlot1 <- renderPlot({KPI1_shiny %>% filter(between(Ordermaand, v$Begin, v$Eind) %>%
ggplot(aes(x = Ordermaand, y = AantalProducten, group = 1))
)})
}
shinyApp(ui, server)
你首先必须根据日期的输入制作KPI1_shiny
一个反应性数据框,然后你可以在你的情节中使用这个数据框。
这是一个带有绘图点的示例:
library(shiny)
library(shinydashboard)
library(tidyverse)
library(lubridate)
KPI1_shiny <- structure(list(J = c("2017", "2017", "2017", "2017", "2017", "2017"), M = c("01", "02", "03", "04", "05", "06"), Ordermaand = structure(c(17167, 17198, 17226, 17257, 17287, 17318), class = "Date"), AantalProducten = c(706L, 644L, 727L, 724L, 787L, 1018L)), row.names = c(NA, 6L), class = "data.frame")
ui <- dashboardPage(
dashboardHeader(title = "Dashboard by: Bjorn"),
dashboardSidebar(
sidebarMenu(
menuItem("KPI1", tabName = "KPI1", icon = icon("th")),
menuItem("KPI2", tabName = "KPI2 | ", icon = icon("th")),
menuItem("Dashboard", tabName = "KPI7", icon = icon("chart-bar")),
menuItem("Widgets", tabName = "KPI9", icon = icon("th")))
),
dashboardBody(
tabItems(
# KPI 1 Aantal verkochte producten binnen een tijdsperiode----------------------------------------------------------------------------------------------------
tabItem(tabName = "KPI1",
fluidRow(
box(title = "Begindatum",
selectInput(
inputId = "Beginjaar", label = "Beginjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Beginmaand", label = "Beginmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(title = "Einddatum",
selectInput(
inputId = "Eindjaar", label = "Eindjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Eindmaand", label = "Eindmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(plotOutput("iPlot1"))
)
)
)
))
server <- function(input, output) {
v <- reactiveValues(value = NULL)
observe({
v$Begin <- make_date(input$Beginjaar, input$Beginmaand)
v$Eind <- make_date(input$Eindjaar, input$Eindmaand)
})
data <- reactive({
KPI1_shiny %>%
filter(between(Ordermaand, v$Begin, v$Eind))
})
output$iPlot1 <- renderPlot({
ggplot(data = data(), aes(x = Ordermaand, y = AantalProducten, group = 1)) +
geom_point()
})
}
shinyApp(ui, server)
我正在尝试在 R Shiny 中制作一个仪表板。但我不断收到错误消息,无法弄清楚如何解决这个问题。
错误:
data
must be a data frame, or other object coercible byfortify()
, not a logical vector
有人可以帮忙吗?谢谢!
library(shiny)
library(shinydashboard)
library(tidyverse)
library(lubridate)
KPI1_shiny <- structure(list(J = c("2017", "2017", "2017", "2017", "2017", "2017"), M = c("01", "02", "03", "04", "05", "06"), Ordermaand = structure(c(17167, 17198, 17226, 17257, 17287, 17318), class = "Date"), AantalProducten = c(706L, 644L, 727L, 724L, 787L, 1018L)), row.names = c(NA, 6L), class = "data.frame")
ui <- dashboardPage(
dashboardHeader(title = "Dashboard by: Bjorn"),
dashboardSidebar(
sidebarMenu(
menuItem("KPI1", tabName = "KPI1", icon = icon("th")),
menuItem("KPI2", tabName = "KPI2 | ", icon = icon("th")),
menuItem("Dashboard", tabName = "KPI7", icon = icon("chart-bar")),
menuItem("Widgets", tabName = "KPI9", icon = icon("th")))
),
dashboardBody(
tabItems(
# KPI 1 Aantal verkochte producten binnen een tijdsperiode----------------------------------------------------------------------------------------------------
tabItem(tabName = "KPI1",
fluidRow(
box(title = "Begindatum",
selectInput(
inputId = "Beginjaar", label = "Beginjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Beginmaand", label = "Beginmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(title = "Einddatum",
selectInput(
inputId = "Eindjaar", label = "Eindjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Eindmaand", label = "Eindmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(plotOutput("iPlot1"))
)
)
)
))
server <- function(input, output) {
v <- reactiveValues(value = NULL)
observe({
v$Begin <- make_date(input$Beginjaar, input$Beginmaand)
v$Eind <- make_date(input$Eindjaar, input$Eindmaand)
})
output$iPlot1 <- renderPlot({KPI1_shiny %>% filter(between(Ordermaand, v$Begin, v$Eind) %>%
ggplot(aes(x = Ordermaand, y = AantalProducten, group = 1))
)})
}
shinyApp(ui, server)
你首先必须根据日期的输入制作KPI1_shiny
一个反应性数据框,然后你可以在你的情节中使用这个数据框。
这是一个带有绘图点的示例:
library(shiny)
library(shinydashboard)
library(tidyverse)
library(lubridate)
KPI1_shiny <- structure(list(J = c("2017", "2017", "2017", "2017", "2017", "2017"), M = c("01", "02", "03", "04", "05", "06"), Ordermaand = structure(c(17167, 17198, 17226, 17257, 17287, 17318), class = "Date"), AantalProducten = c(706L, 644L, 727L, 724L, 787L, 1018L)), row.names = c(NA, 6L), class = "data.frame")
ui <- dashboardPage(
dashboardHeader(title = "Dashboard by: Bjorn"),
dashboardSidebar(
sidebarMenu(
menuItem("KPI1", tabName = "KPI1", icon = icon("th")),
menuItem("KPI2", tabName = "KPI2 | ", icon = icon("th")),
menuItem("Dashboard", tabName = "KPI7", icon = icon("chart-bar")),
menuItem("Widgets", tabName = "KPI9", icon = icon("th")))
),
dashboardBody(
tabItems(
# KPI 1 Aantal verkochte producten binnen een tijdsperiode----------------------------------------------------------------------------------------------------
tabItem(tabName = "KPI1",
fluidRow(
box(title = "Begindatum",
selectInput(
inputId = "Beginjaar", label = "Beginjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Beginmaand", label = "Beginmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(title = "Einddatum",
selectInput(
inputId = "Eindjaar", label = "Eindjaar:",
list("2017", "2018"
)),
selectInput(inputId = "Eindmaand", label = "Eindmaand",
list("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
)),
box(plotOutput("iPlot1"))
)
)
)
))
server <- function(input, output) {
v <- reactiveValues(value = NULL)
observe({
v$Begin <- make_date(input$Beginjaar, input$Beginmaand)
v$Eind <- make_date(input$Eindjaar, input$Eindmaand)
})
data <- reactive({
KPI1_shiny %>%
filter(between(Ordermaand, v$Begin, v$Eind))
})
output$iPlot1 <- renderPlot({
ggplot(data = data(), aes(x = Ordermaand, y = AantalProducten, group = 1)) +
geom_point()
})
}
shinyApp(ui, server)