r - 快速导入多个 txt 文件,处理空行并在 R 中的表中包含文件名
问题描述
我想计算每个用户的平均喜欢和分享。目前我正在尝试通过将所有数据导入 R 然后计算来做到这一点 - 如果您有其他方法,我很乐意尝试它们。
我有 40,000 个 txt 文件。每个 txt 文件代表一个用户,包括每个帖子、它的喜欢和分享,例如
file Text likes shares
user1.txt exampletext 1 13 5
exampletext 2 1 0
user2.txt othertext1 192 0
othertext2 11 18
othertext2 77 5
...
- 列分隔符是一个“;”,每个新的数据条目/行都由一个“/n”关闭。
- 一些txt文件是空的
- 我不需要文字,只需要喜欢和分享——如果有帮助的话
我尝试了两种方法(都来自stackoverflow,到目前为止谢谢!):
setwd('path')
filelist <- list.files()
res <- rbindlist(lapply(dir(pattern = "\\.txt"), fread))
-> 快速,但它不能处理空行,它确实用文件名标记行条目。如果我没有文件名,我无法获得每个用户的平均点赞数和分享数。
setwd('path')
filelist <- list.files()
Results <- NULL
for (i in filelist){
i.file <- tryCatch(fread(i,colClasses="NULL", nThread = 4), error=function(e) e)
if(!class(i.file)[1]=="data.table"){
i.file <- data.table(cbind(txt.file=i,is.empty="YES",
message=i.file$message))
} else if(nrow(i.file)==0){
i.file <- data.table(cbind(txt.file=i,is.empty="YES",
message=NA))
} else {
i.file[,txt.file:=i]
i.file[,is.empty:="No"]
}
Results <- rbind(Results,i.file,fill=TRUE)
rm(i.file);gc()
}
-> 有效,但速度很慢,需要数周才能完成。
有人可以帮忙吗?谢谢!
解决方案
推荐阅读
- java - 在 Spring 中覆盖库版本
- c - 关于 sizeof 溢出 size_t 的 C 标准
- excel - 运行时错误,用于电子邮件自动化的 VBA EXCEL
- php - PHP中的Excel数据显示自动显示一组行
- python - 使用Event在线程中循环时如何修复Window对象没有属性_stop_thread?
- openssl - 在 Windows 上构建静态 OpenSSL 库
- python - 使用 NetworkX 查找从一个到另一个的最短和最长权重
- python - 在使用 ProcessPoolExecutor 的脚本文件之间共享变量
- php - 检测一个循环数组中的子集项
- python - Python循环遍历具有不同长度的嵌套系列