[英]reading multiple files quickly in R
我有超過10000個csv文件,我需要對每個csv文件的每一列進行快速傅里葉變換。 我可以訪問1000個核心。 什么應該是最快的方式?
目前我有一個for循環按順序讀取每個文件並使用apply(data, 2, FFT)
函數。 我該怎么辦? 我嘗試做clusterapply(1:10000, cl, transformation)
。 在轉換函數中,我讀過csv。 所有的閱讀仍然需要很長時間。 你們中的任何人都知道更快的方式嗎?
我認為最快的方式就是mclapply
和fread
。
#Bring in libraries
library(parallel)
library(data.table)
#Find all csv files in your folder
csv.list = list.files(pattern="*.csv")
#Create function to read in data and perform fft on each column
read.fft <- function(x) {
data <- fread(x)
result <- data[, lapply(.SD,fft)]
return(result)
}
#Apply function using multiple cores
all.results <- mclapply(csv.list,read.fft,mc.cores=10)
如果您對每個數據集的隨機樣本有意義,我強烈建議更改read.fft
函數以使用shuf
命令。 它將花費你的讀入時間相當多。
#Create function to read in data and perform fft
read.fft <- function(x) {
data <- fread(paste0("shuf -n 10000",x)) #Takes random sample of 10000 rows
result <- data[, lapply(.SD,fft)]
return(result)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.