R调用ORATS API报parse_url错误length(url)==1 is not TRUE解决方案问询
问题根源
原代码中使用paste(tickers, sep = ",")处理字符向量时,仅会对多组输入参数做分隔拼接,不会将单个向量的多个元素合并为一个字符串,最终会生成和tickers向量长度一致的多个URL,触发parse_url的长度校验报错。
修改方案
将paste(tickers, sep = ",")替换为paste(tickers, collapse = ",")即可,collapse参数会将向量的所有元素按指定分隔符合并为单个字符串,同时兼容单个代码的输入场景。
修改后的完整函数
orats <- function(data="cores/general", tickers, token){ # 字符向量转为逗号分隔的单个字符串 t1 <- paste(tickers, collapse = ",") x1 <- GET(paste("https://api.orats.io/data/",data,"?ticker=",t1,sep=""), add_headers(Authorization = token)) x2 <- content(x1)[[1]] data.frame(t(sapply(x2, function(x) x[1:max(lengths(x2))]))) }
兼容测试场景
- 传入单代码字符串:
orats(tickers = "AAPL", token = "你的接口token")运行正常 - 传入多代码向量:
orats(tickers = c("AAPL", "MSFT"), token = "你的接口token")运行正常 - 传入多代码逗号分隔字符串:
orats(tickers = "AAPL,MSFT", token = "你的接口token")运行正常
内容的提问来源于stack exchange,提问作者niceguy
相关产品推荐
相关产品推荐

