【发布时间】:2016-09-04 18:30:11
【问题描述】:
我有一个充满 .txt 文件的文件夹,我想循环并压缩到一个数据框中,但每个 .txt 文件都是一个主题的数据,并且文本文件中没有指示主题编号或时间的列研究中的点(例如 1-5)。我需要在我的循环中添加一两行代码来查找四个数字的字符串(即每个文件都标记为:“4325.5_ERN_No_Startle”),然后创建一个包含 4325 的列和另一个包含 5 的列该主题的每个数据点,直到循环到达下一个。找了好久,还是空着,有什么建议吗?
我还没有完全让循环工作:
path = "/Users/me/Desktop/Event Codes/ERN task/ERN text files transferred"
out.file <- ""
file <- ""
file.names <- dir(path, pattern =".txt")
for(i in 1:length(file.names)){
file <- read.table(file.names[i],header=FALSE, fill = TRUE)
out.file <- rbind(out.file, file)
}
在我中途收到此错误消息之前运行正常:
read.table 中的错误(file.names[i],header = FALSE,fill = TRUE): 输入中没有可用的行
【问题讨论】:
-
可以尝试在 read.table 周围使用
try()看看是否是因为文件为空。打印出您在死机时所处的循环也可以帮助您识别可能是问题的文件。 -
除了错误,使用
file<-lapply(file.names, read.table, header=F, fill=T)后跟out.file <- do.call(rbind, file)会更快 -
我总是在导致错误的循环中抛出
print(file.names[i])。这样您就可以自己检查有罪的文件。也只需使用for (ff in file.names)——循环会自动为你遍历file.names的元素