【问题标题】:Read multiple .txt files into R Vector as Individual Elements将多个 .txt 文件作为单个元素读入 R Vector
【发布时间】:2014-10-02 04:51:03
【问题描述】:

我的桌面上有一个名为“项目”的文件夹。此文件夹内有多个 .txt 文件(例如 1.txt、2.txt、3.txt 等)。有谁知道一个解决方案可以让我拥有一个向量,其中向量中的每个元素都对应于文件的内容?

例如,如果 1.txt 包含“你喜欢苹果”,2.txt 包含“我喜欢梨”,3.txt 包含“猫喜欢鱼”.....我希望结果是长度为 3 的向量,其中每个元素包含 .txt 文件中的全部文本。本质上是((“我喜欢苹果”),(“你喜欢梨”),(“猫喜欢鱼”))。

我当前的部分解决方案可以按照我想要的方式读取一个文本文件,但是我如何为目录中的每个 .txt 文件执行此操作并相应地存储它?

fileName <- '/Users/myname/Desktop/1.txt'
text <- readChar(fileName, file.info(fileName)$size)

非常感谢!我正在参加黑客马拉松比赛,需要它来创建一个 tf-idf 实现,并且向量中的每个元素都将是一个文档。

【问题讨论】:

    标签: r text nlp


    【解决方案1】:

    尝试:(如果所有文件都在工作目录中)

    files <- list.files(pattern="^\\d+\\.txt")
    files
    #[1] "1.txt" "2.txt" "3.txt"
    
    unname(sapply(files, readLines))
    #[1] "You like apples" "I like pears"    "Cats like fish" 
    

    如果您在其他目录中有文件

    fileDir <- "/home/akrunHome/TestN"
    files <- list.files(fileDir, pattern="^\\d+\\.txt")
    files1 <- paste(fileDir, files, sep="/") 
    unname(sapply(files1, readLines))
    #[1] "You like apples" "I like pears"    "Cats like fish" 
    

    基于@Roman Luštrik 的 cmets,您可以这样做:

     paste(unname(sapply(files1, readLines)), collapse=", ")
     #[1] "You like apples, I like pears, Cats like fish"
    

    也许你需要

      paste(paste0("'", unname(sapply(files1, readLines)),"'"), collapse=", ")
     #[1] "'You like apples', 'I like pears', 'Cats like fish'"
    

    【讨论】:

    • 首先,感谢您的帮助。其次,我们快到了,但我需要的格式是让每个字符串用逗号分隔。有效:#[1]“你喜欢苹果”、“我喜欢梨”、“猫喜欢鱼”。这对您来说很容易解决吗?
    • @uspowpow 使用paste 及其参数collapse 折叠字符串。您提供的任何字符都将插入到字符串之间。
    【解决方案2】:

    如果文件包含多行,我们会从@akrun 的答案中使用unname 获得一个列表。 unlist 可以然后convert the list to a vector:

    myList <- unname(sapply(filesMultipleLines, readLines))
    myVector <- unlist(myList, use.names=FALSE)
    

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多