我试图用从API中拉出的列表中的NAs替换NULL值,但长度不同,因此无法替换。不适用于替换列表中的NULL/for循环
我已经尝试在toxboot包(找到here)中使用nullToNA函数,但是当我试图调用它时,它不会在R中找到该函数(我不知道是否有更改我找不到或者是因为列表不是从MongoDB中提取的)。我也尝试了所有函数调用检查here。我的代码如下。任何帮助?
library(httr)
library(toxboot)
library(RJSONIO)
library(lubridate)
library(xlsx)
library(reshape2)
resUrl <- "http://api.eia.gov/series/?api_key=2B5239FA427673D22505DBF45664B12E&series_id=NG.N3010CO3.M"
comUrl <- "http://api.eia.gov/series/?api_key=2B5239FA427673D22505DBF45664B12E&series_id=NG.N3020CO3.M"
indUrl <- "http://api.eia.gov/series/?api_key=2B5239FA427673D22505DBF45664B12E&series_id=NG.N3035CO3.M"
apiList <- list(resUrl, comUrl, indUrl)
results <- vector("list", length(apiList))
for(i in length(apiList)){
raw <- GET(url = as.character(apiList[i]))
char <- rawToChar(raw$content)
list <- fromJSON(char)
for (j in length(list$series[[1]]$data)){
if (is.null(list$series[[1]]$data[[j]][[2]])== TRUE)
##nullToNA(list$series[[1]]$data[[j]][[2]])
##list$series[1]$data[[j]][[2]] <- NA
else
next
}
##seriesData <- list$series[[1]]$data
unlistResult <- lapply(list, unlist)
##unlistResult <- lapply(seriesData, unlist)
##unlist2 <- lapply(unlistResult,unlist)
##results[[i]] <- unlistResult
results[[i]] <- unlistResult
}
我的主题标签有一些我尝试过的东西。但还有其他一些我没有尝试过的方法。我已经看过lapply(list,function(x)ifelse(x ==“NULL”,NA,x)),但没有任何运气。
I th墨水在“显示您在项目中某处使用的所有库”和“显示与此[最小示例](http://stackoverflow.com/help/mcve)相关的库”之间有一个平衡。我相信你不需要包含'openxlsx','lubridate'或'reshape2'。另外,我建议你可以使用'httr :: content()'并且否定'fromJSON'和'rawToChar'的显式使用,但也许我错过了一些东西。 – r2evans