【问题标题】:Creating a data frame in R with the content of multiple text files在 R 中创建一个包含多个文本文件内容的数据框
【发布时间】:2018-05-18 19:54:58
【问题描述】:

我是 R 编程新手,想知道如何获取 1,172 个文本文件的内容并创建一个数据框,其中每个文本文件的内容位于数据框中的各个行中。

所以我想从拥有 1,172 个文本文档变成拥有 1,172 行和 1 列的数据框,每行包含每个单独文本文件的内容。因此,数据框的第五行将包含我输入 R 的列表中第五个文本文档中的文本。

谢谢,

泰勒

【问题讨论】:

  • 你有没有尝试过?你到底是在哪里卡住的?这不完全是一个常见的操作,所以有一个内置的函数,但是把一些东西放在一起应该不会太难。使用list.file() 查找您要读取的所有文件,然后将这些值映射到readLines() 或其他内容以实际读取文件(请参阅stackoverflow.com/questions/9068397/…)。
  • 我所做的是用 tm 包制作了一个语料库文件,然后我运行了这个:vec

标签: r text-mining


【解决方案1】:
# get all  files with extension "txt" in the current directory
file.list <- list.files(path = ".", pattern="*.txt", full.names=TRUE)

# this creates a vector where each element contains one file
all.files <- sapply(file.list, FUN = function(x)readChar(x, file.info(x)$size))

# create a dataframe
df <- data.frame( files= all.files, stringsAsFactors=FALSE)

最后两个步骤可以合并为一个以避免创建额外的向量:

df <- data.frame( files= sapply(file.list, 
                                FUN = function(x)readChar(x, file.info(x)$size)),
                  stringsAsFactors=FALSE)

【讨论】:

  • 谢谢!我会对此表示赞成,但我没有足够的声誉。
  • @Tyler 如果这回答了您的问题,您可以将其标记为“已接受”。您可以在投票箭头下方找到“复选”标记。
【解决方案2】:

我刚刚对此进行了测试,对我来说效果很好。

# set the working directory (where files are saved)
setwd("C:/your_path_here/")

file_names = list.files(getwd())
file_names = file_names[grepl(".TXT",file_names)]

# print file_names vector
file_names
files = lapply(file_names, read.csv, header=F, stringsAsFactors = F)
files = do.call(rbind,files)

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 2020-05-02
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多