我的桌面上有一个名为" 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实现,向量中的每个元素都是一个文档。
答案 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)