我正在尝试将此JSON导入R中的数据框。数据的网址为http://mooshe.pw/files/items_rs3.json
这是我的代码:
doctype html
但是,尝试运行此命令时出现以下错误消息:
library(jsonlite)
item.codes <- fromJSON('http://mooshe.pw/files/items_rs3.json')
因此,某些数据中的值中包含引号,这意味着R很难解析JSON并将其作为数据帧。我怎么能绕过这个?
答案 0 :(得分:2)
同样,您需要修复它是无效的JSON。这是一种方法:
library(magrittr)
library(stringi)
library(jsonlite)
readLines("http://mooshe.pw/files/items_rs3.json") %>%
stri_replace_all_regex('(")([[:alnum:][:blank:]]+)("")', "'$2'\"") %>%
fromJSON()
答案 1 :(得分:2)
RJSONIO::fromJSON
对不规则语法更加宽容,并会为您提供一个列表,您可以将其汇总到purrr
列表中:
library(purrr)
l <- RJSONIO::fromJSON('http://mooshe.pw/files/items_rs3.json')
df <- l %>% transpose() %>% map_df(simplify)
df
## # A tibble: 23,972 × 6
## name members tradeable cosmetic modelid value
## <chr> <lgl> <lgl> <lgl> <dbl> <dbl>
## 1 Dwarf remains TRUE FALSE FALSE 2595 -1
## 2 Toolkit TRUE FALSE FALSE 2679 -1
## 3 Cannonball TRUE TRUE FALSE 2413 5
## 4 Nulodion's notes TRUE FALSE FALSE 2794 -1
## 5 Ammo mould TRUE FALSE FALSE 2706 5
## 6 Instruction manual TRUE FALSE FALSE 2794 10
## 7 Cannon base TRUE TRUE FALSE 63866 187500
## 8 Cannon stand TRUE TRUE FALSE 63876 187500
## 9 Cannon barrels TRUE TRUE FALSE 63868 187500
## 10 Cannon furnace TRUE TRUE FALSE 63870 187500
## # ... with 23,962 more rows