将多个.txt文件作为单个元素读入R Vector

时间:2014-10-02 04:51:03

标签: r text nlp

我的桌面上有一个名为" project"的文件夹。在此文件夹中有多个.txt文件(例如1.txt,2.txt,3.txt等)。有没有人知道一个解决方案,使我能够有一个向量,其中向量中的每个元素对应于文件的内容?

例如,如果1.txt包含"你喜欢苹果",2.txt包含"我喜欢梨"和3.txt包含"猫喜欢鱼和# 34; .....我希望结果是长度为3的向量,其中每个元素都包含.txt文件中的整个文本。基本上(("我喜欢苹果"),("你喜欢梨"),("猫喜欢鱼"))。

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

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

非常感谢!我在黑客马拉松中竞争,需要这个来创建一个tf-idf实现,向量中的每个元素都是一个文档。

2 个答案:

答案 0 :(得分:5)

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

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" 

基于@RomanLuštrik的评论,您可以这样做:

 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 :(得分:0)

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

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