2017-07-17 42 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 = "")