Tengo datos experimentales expresados como dicts de pares clave-valor para cada experimento. Un conjunto de experimentos relacionados se serializa como una lista de estos dicts en JSON. Esto es analizable en en R a través del paquete rjson
, pero los datos se cargan en una forma que es un reto para analizarTransposición de la lista de diccionarios JSON para el análisis en R
data <- fromJSON('[{"k1":"v1","k2":"v2"}, {"k1":"v3","k2":"v4"}]')
rendimientos
[[1]]
[[1]]$k1
[1] "v1"
[[1]]$k2
[1] "v2"
[[2]]
[[2]]$k1
[1] "v3"
[[2]]$k2
[1] "v4"
El intento de convertir esto en un data.frame
directamente con as.data.frame(data)
rendimientos :
k1 k2 k1.1 k2.1
1 v1 v2 v3 v4
claramente viendo la secuencia de pares clave/valor en todos los experimentos como una lista plana de 1 dimensión.
Lo que quiero es una tabla más convencional con una fila para cada experimento, y una columna para cada clave única:
k1 k2
1 v1 v2
2 v3 v4
¿Cómo puedo expresar limpiamente esta transformada en R?
Al igual que la solución plyr, ya que puede tratar las variables que aparecen en un orden diferente para cada observación. Llámame paranoico, pero me preocuparon algunas observaciones que no tienen algunas variables. Aquí hay una variación que no funciona ni siquiera para casos muy malos: x <-list (lista (k1 = 2, k2 = 3), lista (k2 = 100, k1 = 200), lista (k1 = 5)) ; ldply (x, function (z) as.data.frame (t (unlist (z))) –
Creo que una mejor solución es 'ldply (x, data.frame)' – hadley
Siempre elegiría la solución plyr:) –