对所有数据执行操作

Perform action on all data

我有很多包含数据的 csv 文件。我想对我的所有文件执行相同的操作,但我不知道如何在不对所有文件单独执行的情况下执行此操作。

我读入了所有 csv 文件并使用以下命令将数据保存在我的环境中:

files <- list.files(path=path, pattern="*.csv") 
for(file in files) {  
    perpos <- which(strsplit(file, "")[[1]]==".")   
    assign(gsub(" ","",substr(file, 1, perpos-1)), 
           read.csv(paste(path,file,sep="")))
}

我要执行的操作是对向量进行 fft(x)(快速傅立叶变换)。例如,如果文件名为 data1,我想执行 fft(data1$vector)。我想对所有数据执行此操作。

我发现最简单的方法是使用 data.table 包中的一些实用函数:fread(更快的文件 reader)和 rbindlist(将列表合并为单个数据 table 或数据框)。

沿着这些路线的东西应该做你想要的:

files <- list.files(path = path, pattern = "*.csv")

# Read your files into a list of data tables 
# (if you want data frames, set data.table = FALSE)
data <- lapply(files, fread)

data <- rbindlist(data, use.names = TRUE, fill = TRUE)

根据文件的具体情况,您可能需要 fread 的其他参数。您可能不需要指定 use.namesfill