2017-07-17 79 views
0

我是R新手,我正在練習將JSon轉換爲R,然後轉換爲CSV或Excel。我下載了從https://mtgjson.com/開始練習的整個Magic the Gathering卡片。我用這個代碼把它放到一個「列表」中,但我希望它在一個數據框或表格中。使用R轉換JSON到Excel

json_file<- rjson::fromJSON(file= "C://Users/ahalman/Desktop/AllCards.json") 

我想:

as.data.frame(json_file) 

但我得到一個錯誤,指出消息:「錯誤(函數(...,row.names = NULL,check.rows = FALSE,檢查。參數意味着行數不同:13,10,14,15,11,12,16,19,9,8,6,7,18,4,17,21,23,20,22 「

我認爲這將解決這個問題,因爲我看到了它的另一個堆棧溢出頁面上,但不管它,它不工作:

json_file <- lapply(json_file, function(x) { 
    x[sapply(x, is.null)] <- NA 
    unlist(x) 
    }) 

任何幫助將是偉大的。一旦它處於數據幀格式,我得到了這個!

+1

實際上,我與這個相同的數據。不幸的是,製作表格並不是一件微不足道的事情。我的方法是創建兩個表格:一個用於卡片,另一個用於集合。它涉及'lapply()'和'vapply()'的自由使用。 –

+0

@NathanWerth我想我主要在下面回答我的答案。一探究竟。只需要一點清潔。我使用了「stringi」包。 – Alex

+0

看起來像我的工作塊mtgjson.com,所以我必須嘗試當我回家。並遺憾地遺漏了你只處理卡數據的部分。 –

回答

0

我相信這就是答案:

df<- stringi::stri_list2matrix(json_file, byrow = TRUE) 

這適用於第幾列,但事情開始變得混亂。不知道爲什麼。

我想我終於弄明白:

newdf<- stringi::stri_list2matrix(json_file, byrow = TRUE, fill = "")