[英]Using a loop for() on a serie of variables imported from .txt files in R
[英]Combining .txt files in R using a loop
我目前正在尝试使用R将数十个.txt文件合并为一个单个.txt文件。 下面随附的是到目前为止我一直在尝试的代码。 我要合并的文件具有非常相似的名称,例如:“ e20171ny0001000.txt”和“ e20171ct0001000.txt”。 如您所见,文件名的唯一区别是不同的状态缩写。 这就是为什么我一直尝试使用for循环,以便尝试遍历所有状态缩写的原因。
setwd("/Users/tim/Downloads/All_Geographies")
statelist = c('ak','al','ar','az','ca','co','ct','dc','de','fl','ga','hi','ia','id','il','in','ks','ky','la','ma','md','me','mi','mn','mo','ms','mt','nc','nd','ne','nh','nj','nm','nv','ny','oh','ok','or','pa','ri','sc','sd','tn','tx','ut','va','vt','wa','wi','wv','wy')
for (i in statelist){
file_names <- list.files(getwd())
file_names <- file_names[grepl(paste0("e20171", i, "0001000.txt"),file_names)]
files <- lapply(file_names, read.csv, header=F, stringsAsFactors = F)
files <- do.call(rbind,files)
}
write.table(files, file = "RandomFile.txt", sep="\t")
当我运行代码时,没有弹出特定错误。 而是运行整个代码,什么也没有发生。 我觉得我的代码缺少一些阻止其正常运行的内容。
我们需要创建一个列表进行更新。 在OP的代码中, files
是data.frame
的list
,该list
在for
循环中得到更新。 相反,需要将输出存储在list
。 为此,我们可以创建一个NULL'out' list
,然后将输出分配给'out'的每个元素
out <- vector('list', length(statelist))
for (i in seq_along(statelist)){
file_names <- list.files(getwd())
file_names <- file_names[grepl(paste0("e20171", statelist[i],
"0001000.txt"),file_names)]
files <- lapply(file_names, read.csv, header=FALSE, stringsAsFactors = FALSE)
out[[i]] <- do.call(rbind, files)
}
由于out
是一个list
的data.frame
,我们需要遍历所有的list
,然后将它写回文件
newfilenames <- paste0(statelist, "_new", ".txt")
lapply(seq_along(out), function(i) write.table(out[[i]],
file = newfilenames[i], quote = FALSE, row.names = FALSE))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.