首页 > 解决方案 > 将列表转换为数据框仅在循环中生成一些 NA

问题描述

我有一个函数,它采用目录的 .txt 文件名向量并将它们转换为数据框:

makeList <- function(x) {
  print(x)
  dataList <- jsonlite::fromJSON(x)
  dataTemp <- as.data.frame(dataList, stringsAsFactors = FALSE)
  data <- select(dataTemp, -hit_lats, -hit_lngs)
  return(data)
}

我将此函数应用于文件名: DF <- lapply(filenames, FUN = makeList) 最后,将结果列表绑定到数据框:

dFinal <- data.frame()

for(i in 1:length(DF)){
  dFinal <- rbind(dFinal, DF[[i]])
}

当我不使用stringsAsFactors = FALSE时,as.data.frame我会给出一些警告,例如:警告消息:

1: In `[<-.factor`(`*tmp*`, ri, value = c(5.53719008264463,  ... :
  invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = c(1.....
...

但我的主要问题是在我的数据框中,两个变量完全不适用。但是,我检查了这个过程中的一些单个文件(不是通过函数)并且我没有任何 NA(显然,我没有为单个文件运行代码的最后一部分)。

有人知道为什么会产生这些 NA 吗?

标签: r

解决方案


推荐阅读