Открытие всех файлов в папке и применение функции

Я делаю относительно простой фрагмент анализа, который я включил в функцию, для всех файлов в определенной папке. Мне было интересно, есть ли у кого-нибудь какие-либо советы, которые помогут мне автоматизировать процесс в нескольких разных папках.

  1. Во-первых, мне было интересно, есть ли способ прочитать все файлы в определенной папке прямо в R. Я полагаю, что следующая команда выведет список всех файлов:

files <- (Sys.glob("*.csv"))

...которые я нашел в Используя R для вывода списка всех файлов с указанным расширением

А затем следующий код считывает все эти файлы в R.

listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE)) 

…из Управление несколькими файлами в R

Но кажется, что файлы читаются как один непрерывный список, а не отдельные файлы… как я могу изменить скрипт, чтобы открывать все файлы csv в определенной папке как отдельные кадры данных?

  1. Во-вторых, предполагая, что я могу прочитать все файлы по отдельности, как мне выполнить функцию для всех этих фреймов данных за один раз?. Например, я создал четыре небольших фрейма данных, чтобы проиллюстрировать, что я хочу :

    Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1)))
    Df.2 <- data.frame(A = c(1:6),B = (c(2,3,4,5,1,1)))
    Df.3 <- data.frame(A = c(4,6,8,0,1,11),B = (c(7,6,5,9,1,15)))
    Df.4 <- data.frame(A = c(4,2,6,8,1,0),B = (c(3,1,9,11,2,16)))
    

. Я также создал пример функции.:

Summary<-function(dfile){
SumA<-sum(dfile$A)
MinA<-min(dfile$A)
MeanA<-mean(dfile$A)
MedianA<-median(dfile$A)
MaxA<-max(dfile$A)

sumB<-sum(dfile$B)
MinB<-min(dfile$B)
MeanB<-mean(dfile$B)
MedianB<-median(dfile$B)
MaxB<-max(dfile$B)

Sum<-c(sumA,sumB)
Min<-c(MinA,MinB)
Mean<-c(MeanA,MeanB)
Median<-c(MedianA,MedianB)
Max<-c(MaxA,MaxB)
rm(sumA,sumB,MinA,MinB,MeanA,MeanB,MedianA,MedianB,MaxA,MaxB)

Label<-c("A","B")
dfile_summary<-data.frame(Label,Sum,Min,Mean,Median,Max)
return(dfile_summary)}

Обычно я использую следующую команду, чтобы применить функцию к каждому отдельному фрейму данных.

Df1.summary

Есть ли способ вместо того, чтобы применять функцию ко всем кадрам данных и использовать заголовки кадров данных в сводных таблицах (, т.е. Df1.summary).

Большое спасибо,

Katie

86
задан Community 23 May 2017 в 12:26
поделиться