r - 在 R 中使用 rjson 包读取 iso_3166_2.js
问题描述
我需要阅读js
R 来下载iso_3166_2
数据。我如何使用rjson
阅读?
library("rjson")
json_file <- "https://raw.githubusercontent.com/oodavid/iso-3166-2/master/iso_3166_2.js"
lines <- readLines(json_file)
解决方案
包喜欢rjson
并jsonlite
期望读取格式正确的 JSON 数据,而不是任意的 javascript 文件。您可以使用JSON 验证器验证某些内容是否为 JSON 格式。在这你很幸运,它非常接近一个正确的 JSON 文件,你只需要清理一些东西。你只需要清理第一行和最后一行
json_file <- "https://raw.githubusercontent.com/oodavid/iso-3166-2/master/iso_3166_2.js"
lines <- readLines(json_file)
lines[1] <- gsub(".*(?={)", "", lines[1], perl=TRUE)
lines[length(lines)] <- gsub(";.*$", "", lines[length(lines)], perl=TRUE)
mydata <- jsonlite::fromJSON(paste(lines, collapse="\n"))
在这里我使用jsonlite
而不是rjson
因为它更容易允许输入向量并且似乎不会被引用编码绊倒。
推荐阅读
- python - TensorFlow:对文件夹中的多个图像进行分类
- angular - 动态点击离子
- r - 为什么 ggplot (.predict) 不改变 R 中的颜色/调色板?
- reactjs - React-Native 中的 Font Awesome 和 Unicode
- ksh - 用两个文件求和,但每行一次
- django - 使用自定义视图的 django-otp 实现
- karate - 我有一个 json 文件,我在其中设置变量,我有 CSV 文件从中读取值。如何使用 intuit Karate 轻松完成?
- ngrx - 用于嵌套属性的 ngrx 实体适配器
- linux - 发送带有 awk 输出列的电子邮件
- bash - 使用 opam 和 ocaml 的问题