我有一個目錄,其中包含研究中每個患者的檔案夾,但該患者的每個檔案夾中有多個檔案。我想在 R 中為每個檔案夾運行相同的代碼并創建一個摘要檔案。
例如:
setwd("~/pt1")
##pull in files
T1<-read.csv('T1.csv')
T2<-read.csv('T2.csv')
T3<-read.csv('T3.csv')
T4<-read.csv('T4.csv')
## lots of code here ##
--> outputsummaryfile
重復 80 多個檔案夾(患者)。
我知道如何創建一個函式并拉入和運行多個檔案,但我一直堅持如何拉入多個檔案夾并在該檔案夾中的多個檔案上運行一個函式。
有什么幫助嗎?
uj5u.com熱心網友回復:
我建議您閱讀有關purrr::map. 該視頻還展示了它的用法(https://www.youtube.com/watch?v=bzUmK0Y07ck&t=1598s),并且有一個關于讀取多個檔案的示例。
uj5u.com熱心網友回復:
以下是有限檔案的快速方法。
all_files_list<-list.files('path to folder',full.names = TRUE,recursive=TRUE,include.dirs=TRUE) # this will now be a list of all files with full paths.
main_df<- data.frame() # your main dataframe
for(file in all_files_list){ # loops the file listing
tmp_df <- read_tsv(file) #reads each file
#process tmp_df
main_df<- bind_rows(tmp_df) # merge to main dataframe provided same set of columns
}
請注意,由于all_files_list是一個串列,如果它包含大量檔案,您可以使用purrr包來簡化它。
更新1:
另一種選擇是使用 purrr 包并將所有檔案讀入資料框串列,如下所示:
list_of_dataframes<-purrr::map(all_files_list,read_csv,id="filename") #ID column will have the filenames.
然后你可以回圈你的all_files_list并根據你的需要處理每個資料幀。
uj5u.com熱心網友回復:
您可以列出目錄list.dirs,然后回圈目錄
dirs <- list.dirs(path = "[...]", recursive = FALSE)
for (i in 1:length(dirs)) {
files <- list.files(path = "[...]")
do.the.magic.on(files[i])
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418845.html
標籤:
