将数据从txt语料库中提取到R中的.csv

时间:2017-04-10 17:58:27

标签: r rstudio export-to-csv tm

我浏览了一下,但在R studio中找不到我的问题的答案。

所以也许有人有时间和善意,帮助我。

我有一个包含106个txt文件的文件夹,我希望提取数据。

因此,我想构建一个包含两行的.csv。第一行应包含文件名,第二行应包含数字,whis是第一行的最后一个“字”。

每个文档的第一行看起来像“y的文档x”。因此第二行应包含y。请注意,x可能包含一位,两位或三位数字。 如果这不可能,我会很高兴,如果.csv可以包含第2行的第一行。

1 个答案:

答案 0 :(得分:0)

这个解决方案确实涉及很多步骤,所以我认为它应该得到一个答案,但我希望你尝试更多地改进你的问题,以确保我回答你想要问的问题。例如,你说你想要一个带有两个的csv,但是根据你的描述,我认为你实际上意味着你想要两个。我在下面的解决方案中对此做了一些猜测。

这里有一些基本步骤:

  • 遍历您的工作目录以查找.txt文件的路径和名称
  • 从每个文件中读取所有行,一次一个
  • 选择第一行
  • 将第一行分为单词
  • 选择第一行的最后一个单词
  • 将该字词附加到正在运行的列表
  • 并在迭代完成后,构建data.frame并写入csv输出
fp = tools::list_files_with_exts(dir='.', ext='txt', full.names = TRUE)
fn = tools::list_files_with_exts(dir='.', ext='txt', full.names = FALSE)
fn = tools::file_path_sans_ext(fn)

items = length(fp) # get our iterator length for files

lastword = as.character(NULL)
for(i in 1:items) {  # iterate through files
  line = readLines(fp[i])[1]  # read in lines and select the first
  words = strsplit(line, ' ')[[1]]  # split string into vector on spaces
  word = tail(words, 1)  # get the last word of the vector
  lastword = c(lastword, word)  # combine with lastword list
}
df = data.frame(filename=fn, lastword)
write.csv(df, 'my.csv')