在闪亮的应用程序中为许多国家/地区加载要在 multi.js 中显示的国家/地区标志

Load countries flags to be displayed in multi.js for many countries in a shiny app

我有下面这个闪亮的应用程序,我在其中创建 multi.js 输入国家名称和国旗。现在矢量国家工作,但 fos 特定国家和名称,例如 de 而不是德国,但是如果我有一个像 countries2 这样的矢量,带有不同的和更多的国家名称怎么办?

library(shiny)
library(shinyWidgets)
countries <- c('de', 'br','gr')
countries2 <- c('Germany', 'Brazil','Greece','Italy')

img_urls <- paste0(
  'https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/',
  countries, '.svg'
)

input_widget <- multiInput(
  inputId = "Id010",
  label = "Countries :", 
  choices = NULL,
  choiceNames = lapply(
    seq_along(countries2), 
    function(i) {
      tagList(
        tags$img(src = img_urls[i], width = 20, height = 15), 
        countries2[i]
      )
    }
  ),
  choiceValues = countries2
)
ui <- fluidPage(
  input_widget
)

server <- function(input, output, session) {
  
}

shinyApp(ui, server)

您可以通过指定 alpha-2 国家/地区代码来拥有更多国家/地区的国旗。通过在 countries 中添加更多 alpha-2 国家代码并在 countries2 中添加它们的名称,它应该适用于您可能想要包括的任何国家/地区。

有多种方法可以获取每个国家/地区的 alpha-2 代码(例如来自 here). Below I'll be getting this info from here,对于所有国家/地区:

countries_df <- read.csv("https://raw.githubusercontent.com/lukes/ISO-3166-Countries-with-Regional-Codes/master/all/all.csv",strip.white = TRUE)
countries <- tolower(countries_df[,"alpha.2"])
countries2 <- countries_df[,"name"]

之所以可行,是因为您从 here 获取了标志图标,并且每个国家/地区使用的格式是“alpha-2-code.svg”(例如 de.svg 对于德国),因此为了获得图标,您需要这些代码,而不仅仅是国家名称。

这是结合您的代码和我上面所说的结果。