Предположим, что у меня есть структура списка, где есть data.frames
, вложенные в каждый элемент.R: Объединение вложенных элементов списка по имени
l <- list(A = list(D = data.frame(V1 = seq(3), V2 = LETTERS[1:3]),
E = data.frame(V1 = seq(3), V2 = LETTERS[4:6])),
B = list(D = data.frame(V1 = seq(3), V2 = LETTERS[7:9]),
E = data.frame(V1 = seq(3), V2 = LETTERS[10:12])))
$A
$A$D
V1 V2
1 1 A
2 2 B
3 3 C
$A$E
V1 V2
1 1 D
2 2 E
3 3 F
$B
$B$D
V1 V2
1 1 G
2 2 H
3 3 I
$B$E
V1 V2
1 1 J
2 2 K
3 3 L
Я хотел бы найти способ объединить D
и E
data.frames
соответственно из элементов родительского списка (A
, B
), так что результат будет выглядеть так:
$D
V1 V2
1 1 A
2 2 B
3 3 C
4 1 G
5 2 H
6 3 I
$E
V1 V2
1 1 D
2 2 E
3 3 F
4 1 J
5 2 K
6 3 L
я могу выполнить это с петлей, но я пытаюсь найти что-то более эффективное/элегантное.
out <- vector("list", length(list))
for(i in c("D","E")){
out[[i]] <- do.call("rbind", lapply(l, function(x) x[[i]]))
}
Приятно, не могли бы вы немного объяснить регулярное выражение? Я не так хорошо знаком с этим. – cdeterman