我的 R Shiny 仪表板有奇怪的错误

问题描述 投票:0回答:1

我正在 R 中开发闪亮的仪表板。但是有两个问题我很难解决。

我想制作一个按国家/地区划分的二氧化碳排放量的交互式图表。虽然从 CSV 文件读取工作正常,并且大多数时候图表也能按预期工作,但存在一个相当特殊的问题。 由于世界上的国家数量超过200个,我决定按首字母对它们进行分组。首先,我选择字母,然后应该出现名称以这些字母开头的国家/地区。如果我选择一个字母,一切都会正常。然而,对于两个字母,仅显示一半的国家/地区。例如,如果字母是 A 和 B,则模式的工作原理如下:

1st from A
3rd from A
5th from A
....
2nd from B
4th from B
6th from B.

如果有三个字母,则仅显示每个第三个国家/地区的复选框,依此类推。另外,如果我取消选择一个字母,以该字母开头的国家/地区的绘图就会消失,而我希望它以这样的方式工作:如果我取消选择一个字母,则所选/取消选择的国家/地区保持不变。

这是我的 R 代码:

library(shiny)
library(ggplot2)
library(dplyr)


emissions <- read.csv("annual-co2-emissions-per-country.csv")

countries <- emissions %>%
    filter(code != "")

country_names <- unique(countries[,1])

ui <- fluidPage(
    titlePanel("Emissions Dashboard"),
    sidebarLayout(
        sidebarPanel(
            checkboxGroupInput("letters", "Select Letters", choices = unique(substr(country_names, 1, 1))),
            uiOutput("country_selection"),
        uiOutput("possible_selected")
        ),
        mainPanel(
            plotOutput("emissions_plot")
        )
    )
)

server <- function(input, output, session) {
    
    # Update UI for country selection based on chosen letters
    output$country_selection <- renderUI({
        if (is.null(input$letters)) return(NULL)
        checkboxGroupInput("countries", "Select Countries", choices = country_names[startsWith(country_names, input$letters)])
    })
    
    output$possible_selected <- renderPrint({
        country_names[startsWith(country_names, input$letters)]
    })
    
    # Filter data for the selected countries
    filtered_data <- reactive({
        if (is.null(input$countries)) return(NULL)
        countries %>%
            filter(Entity %in% input$countries)
    })
    
    # Render the emissions plot
    output$emissions_plot <- renderPlot({
        req(filtered_data())
        ggplot(filtered_data(), aes(x = Year, y = Annual.CO..emissions, color = Entity)) +
            geom_line() +
            labs(title = "Emissions by Country", x = "Year", y = "Emissions")
    })
}

shinyApp(ui = ui, server = server)
r shiny dashboard
1个回答
0
投票

好吧,我改正了错误。原因是使用了“startsWith”函数。案件已破。

© www.soinside.com 2019 - 2024. All rights reserved.