代码之家  ›  专栏  ›  技术社区  ›  delcast

不起作用的神秘货币

  •  3
  • delcast  · 技术社区  · 7 年前

    Aim: 我试图找到67种货币对美元的兑换率。

    资料图:货币一览表如下:

    currency <-c("ALL", "AMD", "AZN", "BIF", "BOB", "BRL", "BZD", "CLP", "CNY", 
    "COP", "CRC", "DOP", "EGP", "EUR", "GEL", "GHS", "GTQ", "HNL", 
    "HTG", "IDR", "ILS", "INR", "JOD", "KES", "KGS", "KHR", "LAK", 
    "LBP", "LRD", "LSL", "MDL", "MGA", "MMK", "MNT", "MWK", "MXN", 
    "MZN", "NAD", "NGN", "NIO", "NPR", "PEN", "PHP", "PKR", "PYG", 
    "RWF", "SBD", "SLL", "SRD", "SSP", "THB", "TJS", "TRY", "TZS", 
    "UAH", "UGX", "USD", "VND", "VUV", "WST", "XAF", "XCD", "XOF", 
    "YER", "ZAR", "ZMW", "ZWD")
    

    我所做的:

    使用 getQuote 功能来自 quantmod 图书馆,我能得到的大部分报价如下:

    #Split list of 67 currencies into groups of 10
    from_chunks <- split(currency),
          ceiling(seq_along(currency)/10))
    
    #Get length of each group
    length_chunks <- lapply(from_chunks,length)
    
    #Make a vector of length equalt to from_chunks with desired currency USD. 
    to_chunks <- lapply(length_chunks,rep,x="USD")
    
    #Function that takes many currencies and converts them to one
    quote_batches <- function(from,to){
    return(quantmod::getQuote(paste0(from, to, "=X")))
    }
    
    #Apply to the entire list
    mapply(quote_batches,from_chunks,to_chunks)
    

    问题: 我遇到的问题以及将67种货币分成10组的原因是,并非所有的货币都在运行。块5和块7给出此错误:

    Error in `.rowNamesDF<-`(x, value = value) : invalid 'row.names' length
    

    对于其余的块,它工作得很好: enter image description here

    为什么?请告知:)

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ralf Stubner    7 年前

    两个 SSP ZWD 产生404个错误。试一试:

    quantmod::getQuote("SSP=X")
    quantmod::getQuote("ZWD=X")
    

    使用循环可以很容易地找到这个

    for (ccy in currency)
      tryCatch(quantmod::getQuote(paste0(ccy, "=X")), error = print)