Transponuj listę list

Mam listę, która zawiera wpisy na liście i muszę ją przetransponować. Oryginalna struktura jest prostokątna, ale nazwy na listach podrzędnych nie pasują.

Oto przykład:

ax <- data.frame(a=1,x=2)
ay <- data.frame(a=3,y=4)
bw <- data.frame(b=5,w=6)
bz <- data.frame(b=7,z=8)
before <- list(  a=list(x=ax, y=ay),   b=list(w=bw, z=bz))

Czego chcę:

after  <- list(w.x=list(a=ax, b=bw), y.z=list(a=ay, b=bz))

Nie obchodzą mnie nazwy wynikowej listy (na żadnym poziomie).

Oczywiście można to zrobić wyraźnie:

after <- list(x.w=list(a=before$a$x, b=before$b$w), y.z=list(a=before$a$y, b=before$b$z))

ale to jest brzydkie i działa tylko dla struktury 2x2. Jaki jest idiomatyczny sposób na to?

questionAnswers(4)

yourAnswerToTheQuestion