我需要合并几批非常大量的小文件(为每个用户收集我的项目推文)。大的数字是大约50,000个文件:(
我没有一个特别的问题与代码,但我的R只是得到“冻结”在合并,即使我保持文件在10000号。
我使用的代码是:
files <- list.files(
path = file.path(path),
pattern = pattern,
recursive = TRUE,
include.dirs = TRUE,
full.names = TRUE )
json.data_all <- data.frame()
for (i in seq_along(files)) {
filename <- files[[i]]
json.data <- jsonlite::read_json(filename, simplifyVector = TRUE)
json.data_all <- dplyr::bind_rows(json.data_all, json.data)
}
我有几个这样的文件夹..我该如何解决这个问题?
3条答案
按热度按时间webghufk1#
不要在
for
循环中按行绑定或以其他方式增加数据,这非常慢。尝试类似下面的方法。
qij5mzcb2#
通常更容易和更快的方法是创建一个所有 Dataframe 的列表,然后在循环之后使用
bind_rows
一次性合并整个列表。R不能很好地处理内存,因此
for()
循环中的常量绑定在创建和删除不断增长的数据结构时变得非常慢。类似这样的方法应该可以奏效:
bmp9r5qi3#
下面的代码应该可以解决您的问题,而且由于线程化,执行速度也会很快