2010-09-08 25 views
0

En utilisant R, je génère une liste qui contient certains éléments non cotés. S'il vous plaît voir en bas, c'est un code javascript invalide.en citant des membres non cotés dans une liste imbriquée

Code R (ne fonctionne pas)

outq <- lapply (out, function (el){ 
el <- if(is.factor(el$ann)){ 
el$ann <- apply(el$ann, 1, function(e){ e <- paste('"', e, '"', sep="") }) 
} 
}) 

Dans le langage R, Comment puis-je citer les membres du facteur list$x$ann?

Lorsque j'essaye d'analyser ce JSON, json2.js échoue.

Données-échantillon (non valide JSON)

results = JSON.parse(
{ 
"result": { 
"tot": { 
"molal": [ 0.00071243, 0.00071243,  4,  4 ], 
    "ann": [ , , , ] 
}, 
    "desc": { 
"val": [ 8.3486,  4, 0.8531, 4.0025, 0.99999, 0.00072541, 0.00071243, 100, -1.2983e-05, -0.00016223,  17, 111.02, 55.511 ], 
    "ann": [ Charge balance, Adjusted to redox eq, , , , , , , , , , , ] 
}, 
    "species": { 
"molal": [ 55.508, 0.00029101, 2.3071e-09, 0.00042017, 0.00028731, 4.4532e-06, 4.9292e-07, 0.00069149, 1.0274e-05, 6.2142e-06, 4.9139e-12,  4,  0, 4.1166e-27,  4, 8.5144e-21 ], 
    "act": [ 0.8531, 0.00010921, 4.4812e-09, 1.4857e-06, 7.7889e-05, 4.4532e-06, 9.6777e-07, 0.00024834, 3.3916e-06, 0.00028204, 4.9139e-12, 2.2702,  0, 4.1166e-27, 3.7925, 1.8453e-20 ] 
}, 
    "master": { 
"molal": [ 0.00071243, 0.00071243,  4, 8.2332e-27,  4, 1.7029e-20 ] 
}, 
    "pphases": { 
"moles": 9.9993, 
    "delta": -0.00071243 
}, 
    "ListInfo": { 
"n": 1, 
    "format": true 
} 
} 
} 
); 

Répondre

1

Y at-il une raison que vous ne pouvez pas utiliser les packages RJSON/RJSONIO R?

+0

I * suis * en utilisant RJSONIO, mais il ne cite pas le facteur (s). – knb

+1

Eh bien, vous n'avez pas dit, ou je l'ai négligé. Les facteurs sont une construction R, donc vous devrez peut-être convertir via 'as.character()'. –

+0

depuis la version 0.3.1, la bibliothèque RJSONIO cite également la représentation JSON des variables factorielles. – knb

-2

J'ai avancé un pas en avant en utilisant ce code R:

outq <- lapply (out, function (el){el <- if(is.factor(el$ann)){ el$ann <- lapply(el$ann, function(e){ e <- paste('"', e, '"', sep="") })} else {el}}) 
+0

mais je me demande encore: existe-t-il un moyen plus élégant de citer des chaînes de caractères (ou de contraindre et de citer n'importe quel type de données) dans R? Y a-t-il un moyen recommandé? ou une bibliothèque? – knb

+0

Comme dira Dirk: el $ ann <- as.character (el $ ann) et ensuite vous pouvez procéder normalement. –