[英]R - iterate over list of files
我有一個文件列表,其中包含一些要讀取到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)
,但這只會丟失有關哪個文件生成了每個列表的信息。
為了保持跟蹤關系列表文件,有沒有一種方法可以用任何一種方法來繞開它?
謝謝
對於方法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[[.]]))
對於第一種方法,請嘗試
sapply(mynames,function(nameoffile){nrow(get(nameoffile))})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.