2010-09-08 3 views
0

Используя R, я создаю список, содержащий определенные некотируемые элементы. См. Внизу - это неверный код javascript.quoting unquoted members во вложенном списке

код R (не работает)

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

На языке R, Как я могу процитировать членов list$x$ann фактора?

Когда я пытаюсь разобрать этот JSON, json2.js терпит неудачу.

Примеры данных (Invalid 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 
} 
} 
} 
); 

ответ

1

Есть причина, вы не можете использовать RJSON/пакеты RJSONIO для R?

+0

I * я * с помощью RJSONIO, но это не процитировать фактор (ы). – knb

+1

Ну, ты не сказал, или я не обратил на это внимания. Факторы являются конструкцией R, поэтому вам, возможно, придется преобразовать через 'as.character()'. –

+0

с версии 0.3.1, библиотека RJSONIO также цитирует JSON-представление фактор-переменных. – knb

-2

я продвинулся на шаг вперед, используя этот код 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

, но мне все еще интересно: есть ли более элегантный способ цитирования строк (или принуждения и цитирования любых типов данных) в R? есть ли рекомендуемый способ? или в какой-нибудь библиотеке? – knb

+0

Как сказал Дирк: el $ ann <- as.character (el $ ann), а затем вы можете продолжить нормально. –