У меня есть список файлов с некоторыми данными, которые я хочу прочитать в R, а затем перебирать каждый файл для некоторых вычислений. До сих пор я был в состоянии читать файлы с помощью следующего кода:R - перебрать список файлов
method1
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(myfiles,nrow)
, но это просто теряет информацию о том, какой файл создавал каждый список.
Есть ли способ обойти это с помощью любого из методов, чтобы отслеживать файл списка отношений?
Благодаря
Я бы сказал, 'names' является вектором, а не список, вы можете проверить с помощью 'is.list (names)'. Кстати, не очень хорошая идея назвать переменную 'names'а, поскольку она уже является функцией в R ... – Cath
@CathG благодарит, исправлены имена для mynames. is.list (mynames) возвращает FALSE, но даже если я делаю «mynames <-as.list (mynames)», а затем «lapply (mynames, nrow)», все равно возвращает NULL для всех элементов. – PedroA
Я не удивлен. Вам лучше использовать sapply, поскольку mynames - это вектор, но, во всяком случае, mynames - это имена data.frame, а не data.frames, поэтому у них нет строк ... – Cath