簡體   English   中英

R-遍歷文件列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM