R 通过WDI加载世界银行数据的有效方法

R 通过WDI加载世界银行数据的有效方法,r,shiny,shinydashboard,shinyapps,R,Shiny,Shinydashboard,Shinyapps,我正在进行一个闪亮的仪表板项目,以可视化来自世界银行的数据。总共我需要14个不同的变量,我想在数据表中显示。它在R中工作,但当我尝试在shiny中工作时,我得到一个连接错误。我觉得下载的时间太长了。 有没有一种方法可以更有效地加载数据,或者在后台加载数据,或者其他方式?我找不到使其运行的解决方案,我不想将数据存储在服务器上的文件中,因为这样我就没有自动更新…:/ 这里有一个最基本的重要代码片段 library(shiny) library(dplyr) library(WDI) library(

我正在进行一个闪亮的仪表板项目,以可视化来自世界银行的数据。总共我需要14个不同的变量,我想在数据表中显示。它在R中工作,但当我尝试在shiny中工作时,我得到一个连接错误。我觉得下载的时间太长了。 有没有一种方法可以更有效地加载数据,或者在后台加载数据,或者其他方式?我找不到使其运行的解决方案,我不想将数据存储在服务器上的文件中,因为这样我就没有自动更新…:/

这里有一个最基本的重要代码片段

library(shiny)
library(dplyr)
library(WDI)
library(wbstats)
library(lubridate)

ui <- fluidPage(

   titlePanel('WDI Example'),
   mainPanel(tableOutput('table'))

   )


server <- function(input, output) {

  startDate <- as.numeric(format(Sys.Date(), "%Y")) -20
  endDate <- as.numeric(format(Sys.Date(), "%Y"))

  fetch.data <- list() 

  list <- c("SP.POP.TOTL",
            "NY.ADJ.NNTY.PC.CD",
            "SH.XPD.CHEX.PC.CD",
            "SH.XPD.OOPC.CH.ZS",
            "SH.MED.BEDS.ZS",
            "SH.MED.PHYS.ZS",
            "NY.GDP.MKTP.CD",
            "NY.GDP.MKTP.KD",
            "NY.GDP.MKTP.KD.ZG",
            "SH.XPD.CHEX.GD.ZS",
            "SP.DYN.LE00.IN",
            "SP.POP.65UP.TO",
            "SP.POP.DPND",
            "SP.POP.DPND.OL") 

  for (i in 1:length(list)){
    fetch.data[[i]] <- WDI(indicator = as.character(list[i]),
                           start = startDate, 
                           end = endDate,
                           country = "all",
                           extra = TRUE)
  }

  data <- fetch.data


  for (i in 1:length(list)){

    data[[i]] <- subset(data[[i]], region != "Aggregates")
    data[[i]] <- data[[i]] %>% select(country, iso3c, region, year, noquote(list[i]))
    data[[i]]$date <- as.Date(as.character(date), format = "%Y")
    data[[i]] <- data[[i]][complete.cases(data[[i]][ ,5]),]
    data[[i]] <- data[[i]] %>% group_by(country) %>% arrange(desc(date)) %>% slice(1)
  }


  indicators <- fetch.data[[1]] %>% 
    select(country, iso3c, region) %>% 
    subset(region != "Aggregates") %>% 
    arrange(desc(country)) %>% 
    group_by(country) %>% 
    slice(1)


  for (i in 1:length(list)){
    indicators <- merge(indicators, data[[i]][ ,c(2,5)], by.x = "iso3c", by.y = "iso3c", all = TRUE)
  }


  indicators <- indicators %>% 
    arrange(country) %>% 
    mutate_if(is.numeric, round, 2)

  output$table <- renderTable(indicators)

}

shinyApp(ui = ui, server = server)

库(闪亮)
图书馆(dplyr)
图书馆(WDI)
图书馆(wbstats)
图书馆(lubridate)

ui错误

您的错误在这行代码中:


data[[i]]$date您可以在问题中输入错误信息吗?不客气。如果你觉得答案有用,那么就考虑一下,这样其他有同样问题的人也能找到答案。