用于读取 csv 文件并将其存储在列表中的循环函数
Loop function for reading csv files and store them in a list
我有一个文件夹,其中存储了大约 10 个子文件夹,每个子文件夹包含 4 个 .csv 文件!每个子文件夹对应一个气象站,每个子文件夹中的每个文件包含不同时期的温度数据
(例如 station134_2000_2005.csv、station134_2006_2011.csv、station134_2012_2018.csv 等) .
我写了一个循环来打开每个文件夹,并将所有数据绑定到一个数据框中,但是做我的工作不是很方便。
我需要创建一个循环,以便将每个子文件夹中的这 4 个文件合并到一个数据帧中,然后存储在列表中的不同“插槽”中,或者如果更容易,每个站点合并 csv 数据(即每个子文件夹)作为数据帧从循环中导出。
我编写的打开所有文件夹中的所有文件并创建一个大(rbined)数据框的代码是:
directory <- list.files() # to have the names of each subfolder
stations <- data.frame() # to store all the rbined csv files
library(plyr)
for(i in directory){
periexomena <- list.files(i,full.names = T, pattern = "\.csv$")
for(f in periexomena){
data_files <- read.csv(f, stringsAsFactors = F, sep = ";", dec = ",")
stations <- rbind.fill(data_files,stations)
}
有谁知道如何我有一个列表,每个子文件夹的 rbined 4 csv 文件数据在不同的插槽中,或者我如何修改上述代码 为了在不同的数据框中导出,每个子文件夹中的数据?
尝试:
slotted <- lapply(setNames(nm = directory), function(D) {
alldat <- lapply(list.files(D, pattern="\.csv$", full.names=TRUE),
function(fn) {
message(fn)
read.csv2(fn, stringsAsFactors=FALSE)
})
# stringsAsFactors=F should be the default as of R-3.6, I believe
do.call(rbind.fill, alldat)
})
我有一个文件夹,其中存储了大约 10 个子文件夹,每个子文件夹包含 4 个 .csv 文件!每个子文件夹对应一个气象站,每个子文件夹中的每个文件包含不同时期的温度数据 (例如 station134_2000_2005.csv、station134_2006_2011.csv、station134_2012_2018.csv 等) .
我写了一个循环来打开每个文件夹,并将所有数据绑定到一个数据框中,但是做我的工作不是很方便。
我需要创建一个循环,以便将每个子文件夹中的这 4 个文件合并到一个数据帧中,然后存储在列表中的不同“插槽”中,或者如果更容易,每个站点合并 csv 数据(即每个子文件夹)作为数据帧从循环中导出。
我编写的打开所有文件夹中的所有文件并创建一个大(rbined)数据框的代码是:
directory <- list.files() # to have the names of each subfolder
stations <- data.frame() # to store all the rbined csv files
library(plyr)
for(i in directory){
periexomena <- list.files(i,full.names = T, pattern = "\.csv$")
for(f in periexomena){
data_files <- read.csv(f, stringsAsFactors = F, sep = ";", dec = ",")
stations <- rbind.fill(data_files,stations)
}
有谁知道如何我有一个列表,每个子文件夹的 rbined 4 csv 文件数据在不同的插槽中,或者我如何修改上述代码 为了在不同的数据框中导出,每个子文件夹中的数据?
尝试:
slotted <- lapply(setNames(nm = directory), function(D) {
alldat <- lapply(list.files(D, pattern="\.csv$", full.names=TRUE),
function(fn) {
message(fn)
read.csv2(fn, stringsAsFactors=FALSE)
})
# stringsAsFactors=F should be the default as of R-3.6, I believe
do.call(rbind.fill, alldat)
})