簡體   English   中英

如何使用“ for循環”編寫多個.csv文件名?

[英]how to use “for loop” to write multiple .csv file names?

有誰知道執行“ for循環”的最佳方法,該方式將讀取不同的主題ID並將其附加到導出的CSV的名稱中?

例如,我有一個心電圖軟件​​程序的多個輸出文件(每個文件屬於一個人)。 這些文件名為C800_HR.bdf.evt,C801_HR.bdf.evt,C802_HR.bdf.evt等。每個文件都被讀入r,然后應用了腳本來計算心率變異性。 在腳本的末尾,我需要添加一個循環,該循環將提取主題ID(例如C800,C801,C802),並為每個人寫一個新的文件名,以使其變為C800_RtoR.csv。 本質上,每次讀入和導出文件名時,我都希望避免更改語法。

我目前正在使用以下語法讀取多個文件:

>setwd("/Users/kmpc/Downloads")
>myhrvdata <-lapply(Sys.glob("C8**_HR.bdf.evt"), read.delim)

試試看:

cardio_files <- list.files(pattern = "C8\\d{2}_HR.bdf.evt")
subject_ids <- sub("^(C8\\d{2})_.*", "\\1" cardio_files)

myList <- lapply(cardio_files, read.delim)


## do calculations on the list

for (i in names(myList)) {

  write.csv(myList[[i]], paste0(subject_ids[i], "_RtoR.csv"))

}

唯一的事情是,您在計算時必須使用列表。 您可以將它們組合到單個data.frame中,但是最好將其保留為列表以末尾寫入文件。

考慮通過創建以下函數來概括您的流程:1)讀取文件,2)處理數據,3)輸出到csv。 然后,對所有Sys.glob項反復應用lapply調用已定義的方法,甚至返回已計算數據幀的列表。

proc_heart_rate <- function(f_name) {
   # READ IN .evt FILE INTO df
   df <- read.delim(f_name)

   # CALCULATE HEART RATE VARIABILITY WITH df
   ...

   # OUTPUT df TO CSV
   subject_id <- gsub("\\_.*", "", f_name)
   write.csv(df, paste0(subject_id, "_RtoR.csv"))

   # RETURN df FOR OTHER USES
   return(df)
}

# LIST OF DATA FRAMES WITH CALCULATIONS
myhrvdata_list <-lapply(Sys.glob("C8**_HR.bdf.evt"), proc_heart_rate)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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