R - 遍历文件列表
问题描述:
我有一些文件的列表,其中包含一些我想读入R的数据,然后遍历每个文件进行一些计算。 到目前为止,我能够用下面的代码读取文件:R - 遍历文件列表
方法一
filenames<-list.files(pattern="*.txt")
mynames<-gsub(".txt$", "", filenames)
for (i in 1:length(mynames)) assign(mynames[i], read.table(filenames[i]))
然而,当我尝试应用一些功能,以“名”它只是说,NULL
lapply(mynames,nrow)
我知道将文件直接读入列表可能更容易
METHOD2
temp<-list.files(pattern="*.txt")
myfiles<-lapply(temp, read.table,skip="#")
,然后做lapply该名单lapply(myfiles,nrow)
,但这只是松动有关的文件制作的每个列表中的信息。
有没有办法绕过这两种方法来跟踪关系列表文件?
感谢
答
对于方法2,你可以很容易地使用seomething像
temp <- list.files(pattern = "*.txt")
myfiles <- lapply(temp, read.table, skip = "#")
names(myfiles) <- temp
这样的names
属性存储文件名和你做不要用新的变量来混淆你的工作环境。
所以,当你要遍历您可以使用lapply(myfiles, function(.) nrow(.))
,或者如果你需要遍历这两个文件名,你可以这样像lapply(names(myfiles), function(.) nrow(myfiles[[.]]))
我想说的内容'names'是一个向量的内容,不是列表,你可以用'is.list(names)'来检查。顺便说一下,不是一个很好的主意,因为它已经是一个函数... – Cath 2014-10-28 12:40:21
@CathG谢谢,更正名称为mynames。 is.list(mynames)返回FALSE,但即使我做了“mynames PedroA 2014-10-28 12:45:29
我并不感到惊讶。你最好使用sapply,因为mynames是一个向量,但无论如何,mynames是data.frame名称,而不是data.frames,所以它们没有行... – Cath 2014-10-28 12:48:20