Мы можем list
фреймы данных, затем использовать mapply
для различной обработки типов столбцов: stack
для векторов и do.call(rbind)
для data.frame
с.
L <- mget(ls(pattern="df\\.")) # or list(df.1, df.2, df.3)
res <- data.frame(a=stack(mapply(`[`, L, 1))[[1]])
res$df <- do.call(rbind, mapply(`[`, L, 2))
res
# a a
# 1 1 1
# 2 2 2
# 3 3 3
# 4 4 4
# 5 5 5
# 6 6 6
# 7 7 7
# 8 8 8
# 9 9 9
str(res)
# 'data.frame': 9 obs. of 2 variables:
# $ a : int 1 2 3 4 5 6 7 8 9
# $ df:'data.frame': 9 obs. of 1 variable:
# ..$ a: int 1 2 3 4 5 6 7 8 9
Данные
df.1 <- structure(list(a = 1:3, df = structure(list(a = 1:3), class = "data.frame", row.names = c(NA,
-3L))), row.names = c(NA, -3L), class = "data.frame")
df.2 <- structure(list(a = 4:6, df = structure(list(a = 4:6), class = "data.frame", row.names = c(NA,
-3L))), row.names = c(NA, -3L), class = "data.frame")
df.3 <- structure(list(a = 7:9, df = structure(list(a = 7:9), class = "data.frame", row.names = c(NA,
-3L))), row.names = c(NA, -3L), class = "data.frame")