Функция .id
для ldply()
хороша, но кажется, что они перекрываются, когда вы делаете еще один ldply()
.
Вот довольно общая функция, которая использует rbind.fill()
:
aho <- ldply(llply(xml.list[[1]], function(x) ldply(x, function(x) rbind.fill(data.frame(t(x))))))
> aho[1:5,1:4]
.id des id type
1 pitch Ball 310 B
2 pitch Called Strike 311 S
3 pitch Called Strike 312 S
4 pitch In play, out(s) 313 X
5 .attrs Alexei Ramirez lines out to second baseman Ian Kinsler. <NA> <NA>
.id
для второго ldply()
отсутствует, потому что у нас уже был .id
. Мы могли бы исправить это, назвав первый .id
другим именем, но это не кажется последовательным.
aho2 <- ldply(llply(xml.list[[1]], function(x) {
out <- ldply(x, function(x) rbind.fill(data.frame(t(x))))
names(out)[1] <- ".id2"
out
}))
> aho2[1:5,1:4]
.id .id2 des id
1 atbat pitch Ball 310
2 atbat pitch Called Strike 311
3 atbat pitch Called Strike 312
4 atbat pitch In play, out(s) 313
5 atbat .attrs Alexei Ramirez lines out to second baseman Ian Kinsler. <NA>