问题描述
prod_123456.txt
prod_123474.txt
prod_1234567543.txt etc...
每个对象中都有一个对象列表(不带逗号),如下所示:
prod_123456.txt包含
1213423
1245
12345
2321
134135
prod_123474.txt包含:
23425364
3245
123425367485
等
我想要读取prod文件夹中的所有文件,以便将它们存储在lists列表对象中,如下所示:
[[1]] 123456
[1] 1213423
[2] 1245
[3] 12345
[4] 2321
[5] 134135
[[2]] 123474
[1] 23425364
[2] 3245
[3] 123425367485
等
因此,基本上,有一个与n个txt文件相对应的n个元素的列表,其中txt文件名中的代码是元素本身,并且对于每个元素,都有txt文件中包含的对象的列表
这是我到目前为止所拥有的
filenames <- list.files("folder/",pattern="prod",full.names=TRUE)
ldf <- lapply(filenames,function(i){
read.csv(i,header=FALSE)
})
解决方法
您可以创建矢量文件名,并使用readLines
进行读取。
filenames <- list.files('path/of/folder',full.names = TRUE,pattern = '\\.txt$')
list_of_vector <- sapply(filenames,readLines,simplify = FALSE)
如果您希望每个元素本身都是一个列表,我们可以在函数中as.list
。
list_of_list <- sapply(filenames,function(x)
as.list(readLines(x)),simplify = FALSE)
将sapply
与simplify = FALSE
一起使用,可以创建命名列表。
如果我们希望名称仅是文件名中的数字而不是完整路径,则可以使用:
names(list_of_vector) <- sub('.*prod_(.*)\\.txt','\\1',filenames)