Сначала вам нужно составить список ваших объектов, а затем применить к нему фильтр:
years <- ls(pattern = "^Year")
filter.values <- c(1, 13, 23, 41, 60, 71, 81, 90, 102, 124, 135, 149, 164)
lapply(years, function(x) {
assign(paste0(x, "_output"), get(x)[filter.values, ], envir = globalenv())
})
Однако я бы не советовал делать что-то подобное.
Вместо этого вы можете объединить свои наборы данных в один, используя data.table::rbinlist()
с параметром idcol
.
Это намного чище, если все ваши данные находятся в одной ячейке data.frame
или data.table
.
Вы можете сделать что-то вроде этого:
library(data.table)
year.names <- ls(pattern = "^Year_\\d$")
years <- lapply(year.names, get)
names(years) <- year.names
years <- rbindlist(years, idcol = "year")
years[, rn := 1:.N, by = year]
res <- years[rn %in% filter.values]