无法在 R 闪亮中显示 table
Unable to display table in R shiny
我和我的朋友是 shiny 的新手。
我们正在努力自学闪亮。一切都很好,除了一个大问题和一个小问题。
最大的问题是:为什么我们不能用 renderTable()
显示 table?我们只能显示年份范围。
小问题是:我们可以在相关图中显示边栏标签,而不是在 csv 中分配的标签吗?
非常感谢。
library(shiny)
library(shinydashboard)
ui <- fluidPage(sidebarLayout(
sidebarPanel
(
checkboxGroupInput(
"feature",
"Feature",
c(
"No of case" = "no_case",
"Minor Case" = "minor_case",
"All Non Fatal Case" = "all_non_fatl",
"Fatal Case" = "fatal_case"
)
),
sliderInput(
"year",
"Year",
min = 2015,
max = 2021,
value = c(2015, 2021)
)
),
mainPanel(tabsetPanel(
tabPanel("Plot", plotOutput("correlation_plot")),
tabPanel("Table", tableOutput("ecd"))
))
))
server <- function(input, output) {
yearrange <- reactive({
input$year[1]:input$year[2]
})
output$correlation_plot <- renderPlot({
validate(need(input$feature, 'Check one of these items.'))
plot(ecd$year,
ecd[[input$feature]],
xlab = "Year",
ylab = input$feature) #how not to show tab name but show the side bar name
})
output$ecd <- renderTable({
yearrange()
})
}
shinyApp(ui, server)
你还没有分享数据(ecd
)所以我无法测试,但你可以试试这个。
求大题
Shiny 显示您告诉它显示的内容。在 reactive
函数中,您使用了 input$year[1]:input$year[2]
,因此它显示从起始滑块值到结束滑块值的序列。我猜是这样,但我认为 ecd
数据有一个名为 year
(或其他名称)的列,它具有年份值。您可以使用 subset
(或 dplyr
中的 filter
)对数据中那些特定年份的数据进行子集化。
小问题
创建一个命名向量 (vec
),以便您可以轻松地在 checkboxGroupInput
中使用它以及在 ylab
中使用它来命名 Y 轴。
library(shiny)
library(shinydashboard)
c(
"No of case" = "no_case",
"Minor Case" = "minor_case",
"All Non Fatal Case" = "all_non_fatl",
"Fatal Case" = "fatal_case"
) -> vec
ui <- fluidPage(sidebarLayout(
sidebarPanel
(
checkboxGroupInput(
"feature",
"Feature",
vec
),
sliderInput(
"year",
"Year",
min = 2015,
max = 2021,
value = c(2015, 2021)
)
),
mainPanel(tabsetPanel(
tabPanel("Plot", plotOutput("correlation_plot")),
tabPanel("Table", tableOutput("ecd"))
))
))
server <- function(input, output) {
yearrange <- reactive({
subset(ecd, year %in% input$year[1]:input$year[2])
})
output$correlation_plot <- renderPlot({
validate(need(input$feature, 'Check one of these items.'))
plot(ecd$year,
ecd[[input$feature]],
xlab = "Year",
ylab = names(vec[vec == input$feature]))
})
output$ecd <- renderTable({
yearrange()
})
}
shinyApp(ui, server)
我和我的朋友是 shiny 的新手。
我们正在努力自学闪亮。一切都很好,除了一个大问题和一个小问题。
最大的问题是:为什么我们不能用 renderTable()
显示 table?我们只能显示年份范围。
小问题是:我们可以在相关图中显示边栏标签,而不是在 csv 中分配的标签吗?
非常感谢。
library(shiny)
library(shinydashboard)
ui <- fluidPage(sidebarLayout(
sidebarPanel
(
checkboxGroupInput(
"feature",
"Feature",
c(
"No of case" = "no_case",
"Minor Case" = "minor_case",
"All Non Fatal Case" = "all_non_fatl",
"Fatal Case" = "fatal_case"
)
),
sliderInput(
"year",
"Year",
min = 2015,
max = 2021,
value = c(2015, 2021)
)
),
mainPanel(tabsetPanel(
tabPanel("Plot", plotOutput("correlation_plot")),
tabPanel("Table", tableOutput("ecd"))
))
))
server <- function(input, output) {
yearrange <- reactive({
input$year[1]:input$year[2]
})
output$correlation_plot <- renderPlot({
validate(need(input$feature, 'Check one of these items.'))
plot(ecd$year,
ecd[[input$feature]],
xlab = "Year",
ylab = input$feature) #how not to show tab name but show the side bar name
})
output$ecd <- renderTable({
yearrange()
})
}
shinyApp(ui, server)
你还没有分享数据(ecd
)所以我无法测试,但你可以试试这个。
求大题
Shiny 显示您告诉它显示的内容。在 reactive
函数中,您使用了 input$year[1]:input$year[2]
,因此它显示从起始滑块值到结束滑块值的序列。我猜是这样,但我认为 ecd
数据有一个名为 year
(或其他名称)的列,它具有年份值。您可以使用 subset
(或 dplyr
中的 filter
)对数据中那些特定年份的数据进行子集化。
小问题
创建一个命名向量 (vec
),以便您可以轻松地在 checkboxGroupInput
中使用它以及在 ylab
中使用它来命名 Y 轴。
library(shiny)
library(shinydashboard)
c(
"No of case" = "no_case",
"Minor Case" = "minor_case",
"All Non Fatal Case" = "all_non_fatl",
"Fatal Case" = "fatal_case"
) -> vec
ui <- fluidPage(sidebarLayout(
sidebarPanel
(
checkboxGroupInput(
"feature",
"Feature",
vec
),
sliderInput(
"year",
"Year",
min = 2015,
max = 2021,
value = c(2015, 2021)
)
),
mainPanel(tabsetPanel(
tabPanel("Plot", plotOutput("correlation_plot")),
tabPanel("Table", tableOutput("ecd"))
))
))
server <- function(input, output) {
yearrange <- reactive({
subset(ecd, year %in% input$year[1]:input$year[2])
})
output$correlation_plot <- renderPlot({
validate(need(input$feature, 'Check one of these items.'))
plot(ecd$year,
ecd[[input$feature]],
xlab = "Year",
ylab = names(vec[vec == input$feature]))
})
output$ecd <- renderTable({
yearrange()
})
}
shinyApp(ui, server)