This is my folder structure
Inside each folder are multiple csv files:
I want to make lists like below (I have typed in manually, without using lists)
So I tried this code:
data_dir <- "C:/Users/thepr/Documents/data/as"
num_fu <- 1 : 9
dirs <- paste0(data_dir, num_fu)
flnames <- lapply(dirs, list.files, pattern = "\\.csv$", full.names = TRUE)
as_list <- lapply(flnames, lapply, read.csv)
names(as_list) <- lapply(flnames, lapply, function(x) str_sub(sub("\\.csv$", "", basename(x)), 1, 6))
But it returns:
> names(as_list)[[1]]
[1] "list(\"as1_01\", \"as1_02\", \"as1_03\", \"as1_04\", \"as1_06\", \"as1_07\", \"as1_08\", \"as1_09\", \"as1_10\", \"as1_17\", \"as1_18\", \"as1_19\")"
> names(as_list)[[2]]
[1] "list(\"as2_01\", \"as2_02\", \"as2_03\", \"as2_04\", \"as2_07\", \"as2_08\", \"as2_09\", \"as2_10\", \"as2_19\", \"as2_20\")"
> names(as_list)[[1]][[1]]
[1] "list(\"as1_01\", \"as1_02\", \"as1_03\", \"as1_04\", \"as1_06\", \"as1_07\", \"as1_08\", \"as1_09\", \"as1_10\", \"as1_17\", \"as1_18\", \"as1_19\")"
I want
>names(as_list)[[1]]
as1_01 as1_02 as1_03 as1_04 as1_05 ...
>names(as_list)[[1]][[1]]
as1_01
>names(as_list)[[1]][[2]]
as1_02
>names(as_list)[[1]][[3]]
as1_03
I have looked at other questions here, but not much help so far... Thank you!
Maybe something like :
as_list <- lapply(dirs, function(x) {
files <- list.files(x, pattern = "\\.csv$", full.names = TRUE)
names(files) <- str_sub(basename(files), 1, 6)
lapply(files, read.csv)
})