我已經進口這樣一個JSON文件:R:用空元素轉換嵌套列表data.frame(從JSON)
library(rjson)
json_str <- '[{"id": 1, "code": 7909, "text": [{"col1": "a", "col2": "some text"}], "date": "2015-12-01"}, {"id": 2, "code": 7651, "text": [], "date": "2015-12-01"}, {"id": 3, "code": 4768, "text": [{"col1": "aaa", "col2": "Blah, blah"}, {"col1": "bbb", "col2": "Blah, blah, blah"}], "date": "2015-12-01"}]'
my.list <- fromJSON(json_str)
str(my.list)
不用多說了真正的文件要長得多。
因此,我得到了3個元素的嵌套列表,其中每個元素都是4的列表,然後元素$text
是一個從無到有任意數量元素的可變長度的列表,在我的情況下,通常不是超過3個
經過一番研究,我發現關於轉換list
到data.frame
,例如here和here幾個答案。但是,當'$ text`中的一個或多個嵌套列表爲空時,它們都不會工作。
do.call(rbind, lapply(my.list, data.frame, stringsAsFactors=FALSE))
library(data.table)
rbindlist(my.list, fill=TRUE)
兩者都返回錯誤。
我想將$text
中的列表轉換爲data.frame
的幾列或者只是一列(粘貼內容)。
另一種選擇是能夠跳過某些元素(如$text
)並轉換列表的其餘部分,然後在單獨的行中將這些元素(如$text
)轉換爲不同的data.frame
。我想我可以以某種方式將一個data.frame
與另一個相關聯。
任何人都可以給我任何想法如何做到這一點。 感謝
謝謝@ ananda-mahto,避免了錯誤。然而,你不會得到'data.frame'而是'matrix'。我正在嘗試在你的代碼中加入data.frame部分。 – eindzl
對不起,我的瀏覽器不會刷新。 – eindzl