Вы можете использовать ls
для получения объектов, а затем mget
для получения данных в списке. Мы можем использовать Map
для добавления нового столбца в каждом фрейме данных
d_names <- ls(pattern = 'data_\\d+')
total_data <- Map(cbind, mget(d_names),
new_column = paste0("a", gsub("\\D", "", d_names)))
Обычно лучше хранить данные в списке, а не создавать множество объектов в глобальной среде, но если они вам нужны как отдельные Вы можете использовать фрейм данных list2env
.
list2env(total_data, .GlobalEnv)
. Воспроизводимый пример:
data_101 <- data.frame(a = 1:5, b = 11:15)
data_102 <- data.frame(a = 6:10, b = 16:20)
d_names <- ls(pattern = 'data_\\d+')
Map(cbind, mget(d_names), new_column = paste0("a", gsub("\\D", "", d_names)))
#$data_101
# a b new_column
#1 1 11 a101
#2 2 12 a101
#3 3 13 a101
#4 4 14 a101
#5 5 15 a101
#$data_102
# a b new_column
#1 6 16 a102
#2 7 17 a102
#3 8 18 a102
#4 9 19 a102
#5 10 20 a102