I dati sperimentali sono espressi come valori di coppie chiave-valore per ciascun esperimento. Una serie di esperimenti correlati è serializzata come un elenco di questi dts in JSON. Questo è analizzabile nella R tramite il pacchetto rjson
, ma i dati vengono caricati in una forma che è difficile da analizzareTrasposizione dell'elenco di dizionari JSON per l'analisi in R
data <- fromJSON('[{"k1":"v1","k2":"v2"}, {"k1":"v3","k2":"v4"}]')
rendimenti
[[1]]
[[1]]$k1
[1] "v1"
[[1]]$k2
[1] "v2"
[[2]]
[[2]]$k1
[1] "v3"
[[2]]$k2
[1] "v4"
tentativo di trasformare questo in un data.frame
direttamente con as.data.frame(data)
rese :
k1 k2 k1.1 k2.1
1 v1 v2 v3 v4
visualizzazione chiara della sequenza di coppie chiave/valore in tutti gli esperimenti come un elenco monodimensionale.
Quello che voglio è un tavolo più convenzionale con una riga per ogni esperimento, e una colonna per ogni chiave univoca:
k1 k2
1 v1 v2
2 v3 v4
Come posso esprimere in modo pulito questa trasformazione in R?
Come la soluzione plyr, poiché può gestire le variabili che appaiono in un ordine diverso per ciascuna osservazione. Chiamami paranoico, ma ero preoccupato per alcune osservazioni che non avevano alcune variabili. Ecco una variazione che non si interrompe nemmeno in casi molto gravi: 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))) –
Penso che una soluzione migliore sia 'ldply (x, data.frame)' – hadley
sceglierei sempre la soluzione plyr:) –