Как сказал @ r2evans, я более чем рекомендую вам начать с загрузки всех ваших data.frame
s в один list
. Однако, если у вас нет другой опции, вы можете сделать это:
Сначала давайте создадим 5 data.frame
s:
for (i in 1:5) {
set.seed(123)
assign(paste0("y",i), data.frame(A_CD = rnorm(1),
A_NM = rnorm(1),
A_GK = rnorm(1)))
}
Далее мы можем создать список все наши переменные (используя ls()
) и фильтр (Filter
) только для data.frames
:
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))
Наконец, мы можем отфильтровать data.frame
внутри списка для необходимых столбцов (в них есть CD и NM):
dfs <- lapply(dfs, function(x) x[, grepl("CD|NM", names(x)), drop=FALSE])
Вывод:
dfs
$y1
A_CD A_NM
1 -0.5604756 -0.2301775
$y2
A_CD A_NM
1 -0.5604756 -0.2301775
$y3
A_CD A_NM
1 -0.5604756 -0.2301775
$y4
A_CD A_NM
1 -0.5604756 -0.2301775
$y5
A_CD A_NM
1 -0.5604756 -0.2301775