Der Vorteil der Verwendung von plyr
's llply
über lapply
ist, dass die Listennamen erhalten bleiben. Siehe ?llply
für eine Erklärung. Ich liebe diese Funktion, aber ich kann sie bei einer verschachtelten Liste nicht nutzen. Beispiel:
library(plyr)
m <- as.list(1:2)
names(m) <- c('M1', 'M2')
foo <- list(m, m)
names(foo) <- paste0("R", 1:2)
result <- ldply(foo, function(x){
ldply(x, function(z) { data.frame(a=z, b= z^2)})
})
> result
.id a b
1 M1 1 1
2 M2 2 4
3 M1 1 1
4 M2 2 4
# if I don't operate on the inner list, I can preserve the outer list's names
result2 <- ldply(foo, function(x){
data.frame(a = x[[1]], b = x[[1]]^2)
})
> result2
.id a b
1 R1 1 1
2 R2 1 1
Beachten Sie, dass result
enthält nicht R1
y R2
(die dann als .id
wenn ich nicht die verschachtelte Liste innerhalb jedes Elements von foo
wie im Fall von result2
). Wie kann ich sicherstellen, dass die Namen der äußeren Listen hinzugefügt werden, wenn ich mit verschachtelten Listen arbeite?