Мы можем сделать это в al oop с map
. L oop в именах файлов, прочитайте read_csv
, очистите имена и создайте столбец 'year'
library(dplyr)
library(stringr)
library(purrr)
library(readr)
library(janitor)
files <- paste0("data_", 2013:2019, ".csv")
lst1 <- files %>%
map(~ read_csv(.x) %>%
clean_names() %>%
mutate(year = str_extract(., "\\d{4}"))
Если вывод list
необходимо объединить в один фрейм данных
dat1 <- bind_rows(lst1, .id = 'grp')
В base R
это можно сделать с помощью lapply
lst1 <- lapply(files, function(x) transform(read.csv(x),
year = sub("data_(\\d+)\\..*", "\\1", x)))
dat1 <- do.call(rbind, Map(cbind, lst, grp = seq_along(lst1)))