簡體   English   中英

在R中快速讀取多個文件

[英]reading multiple files quickly in R

我有超過10000個csv文件,我需要對每個csv文件的每一列進行快速傅里葉變換。 我可以訪問1000個核心。 什么應該是最快的方式?

目前我有一個for循環按順序讀取每個文件並使用apply(data, 2, FFT)函數。 我該怎么辦? 我嘗試做clusterapply(1:10000, cl, transformation) 在轉換函數中,我讀過csv。 所有的閱讀仍然需要很長時間。 你們中的任何人都知道更快的方式嗎?

我認為最快的方式就是mclapplyfread

#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.

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