【问题标题】:Extract data from txt corpus to .csv in R将数据从 txt 语料库提取到 R 中的 .csv
【发布时间】:2017-04-10 17:58:26
【问题描述】:

我查看了黑板,但在 R studio 中找不到我的问题的答案。

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

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

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

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

【问题讨论】:

    标签: r rstudio export-to-csv tm


    【解决方案1】:

    此解决方案确实涉及很多步骤,因此我认为它值得回答,但我希望您尝试进一步完善您的问题,以确保我正在回答您打算提出的问题。例如,您说您想要一个包含两个 的 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')
    

    【讨论】:

    • 哇@Mikuana 非常感谢你。我不擅长编码,但是如果我阅读了您的建议,我就会知道您的解决方案是什么,并且我喜欢它。我的意思是列。对困惑感到抱歉!但是,如果我尝试您的代码,则会出现以下错误:Error in file(con, "r") : cannot open the connection In addition: Warning message: In file(con, "r") : cannot open file 'NA': No such file or directory 我尝试用谷歌搜索它,并将文件也移动到另一个文件夹并使用了setwd。这似乎是一个特定于 R 的错误,我不知道如何解决 :(
    • 对不起,我再次忘记提及,我还确保我的源路径以“/”结尾,如另一个 Stackoverflow 线程中所述。
    • 我认为这两个错误都存在,因为fp == NA。你看过fp 对象的元素吗?您是否正在获取 txt 文件的有效文件路径向量?
    • 谢谢!如果我输入fp,回复是character (0)。据我了解,这意味着没有有效的路径。我想这不太可能,但我可能缺少一些包裹吗?我通过在 R Studio 中使用助手“对话”输入目录路径,确保正确输入目录路径。此外,目录路径不包含除常用英文字母外的任何其他字符。
    • 也可能是权限问题。你在什么环境下开发?您正在运行的 R 会话是否具有适当的权限?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2023-04-08
    • 2023-04-07
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多