无法将多个子文件夹中的.txt文件内容读入R

时间:2018-02-28 14:16:07

标签: r list text-files elements read-text

我有结构数据:

  • Main_Text
    • Sub1_text
    • Sub2_text
    • Etc(我有几百个子文件夹)

每个子文件夹容纳多个.txt文件。

我想将所有文件读入R,以创建如下所示的数据框:

  

文件名|文本

     

文件名| .txt文件的内容

我尝试了以下两种方法,但两种方法都不行。任何帮助将不胜感激。

1)使用readtext包:虽然这个包应该循环遍历子文件夹,但我无法做到这一点。循环遍历readtext vignette中文件的代码应该如下:

dir <- "/Users/Main_Folder"
text = readtext(paste0(dir, "/Main_Text/*.txt"))

这只会产生错误:

Error in listMatchingFiles(i, ignoreMissing = ignoreMissing, lastRound = T) : File '' does not exist.

但是,如果我指定子文件夹,即

,则可行
text = readtext(paste0(dir, "/Main_Text/Sub1_text*.txt"))

但鉴于我有几百个子文件夹,我需要一个更加递归的解决方案。

2)我还尝试了以下两步解决方案,首先创建文件列表,然后尝试读取文本,这也导致错误:

这会生成所有文件的准确列表,但显然不包括内容生成步骤:

setwd("/Users/Main_Folder")
dat = basename(list.files(pattern = ".txt$", recursive = TRUE, full.names=TRUE, include.dirs=TRUE))

所以我也尝试过:     mypath中= “/用户/ Main_Folder /”     txt_files_ls = list.files(path = mypath,recursive = T,pattern =“* .txt”)

然而,

哪个有效:

txt_files_df <- lapply(txt_files_ls, function(x) {read.table(file = x, header = F, fill=T, sep =",")})

引发错误:

Error in read.table(file = x, header = F, fill = T, sep = ",") : no lines available in input In addition: There were 42 warnings (use warnings() to see them)

如果我指定

header=T

我得到了一个不同的错误:

Error in read.table(file = x, header = T, fill = T, sep = ",") : more columns than column names  In addition: Warning message: In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :

所以我甚至无法使用类似

之类的东西进入组合它们的最后一步
combined_df <- do.call("rbind", lapply(txt_files_df, as.data.frame))

我知道为什么会这样,因为文本文件本身没有标题,并且有随机格式(它们是新闻稿)。这是我的一个.txt文件的示例:

cat(readLines("Aderholt_text/Aderholt1-28-11.txt"), sep = "\n")
  

2011年1月28日星期五联系方式:Darrell“DJ”Jordan 202-225-4876国会议员罗伯特·阿德霍尔特关于阿尔巴尼亚暴力事件的声明华盛顿特区 - 国会议员罗伯特·阿德霍尔特(R-Alabama)今天发布了

我确定我错过了一些小东西,但任何人都可以帮助说明如何正确阅读文件名+文本,或者使用我尝试过的半工作解决方案之一,还是别的什么?

0 个答案:

没有答案