【发布时间】:2014-10-28 12:36:43
【问题描述】:
我有一个文件列表,其中包含一些我想读入 R 的数据,然后遍历每个文件进行一些计算。 到目前为止,我能够使用以下代码读取文件:
方法1
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)
我知道将文件直接读入列表会更容易
方法2
temp<-list.files(pattern="*.txt")
myfiles<-lapply(temp, read.table,skip="#")
然后对该列表执行 lapply lapply(myfiles,nrow),但这只会丢失有关哪个文件生成每个列表的信息。
有没有什么办法可以用任何一种方法来规避这种情况,以便继续跟踪关系列表文件?
谢谢
【问题讨论】:
-
我会说
names是一个向量,而不是一个列表,你可以用is.list(names)检查。顺便说一句,调用变量names不是一个好主意,因为它已经是R中的一个函数...... -
@CathG 谢谢,更正了我的名字。 is.list(mynames) 返回 FALSE,但即使我执行“mynames
-
@PedroA 试试这个
df1 <- data.frame(Col1=1:5, Col2=6:10); df2 <- data.frame(Col1=rnorm(10), Col2=sample(10)); mynames1 <- ls(pattern="^df\\d+"); sapply(mget(mynames1), nrow)