R语言学习之获取数据的学习(XML和JSON文件的读取)

Posted Kevin&Swift

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言学习之获取数据的学习(XML和JSON文件的读取)相关的知识,希望对你有一定的参考价值。

R中内置的数据集 R的基本分发包中有一个叫做datasets,里面全是示例数据集,使用data函数来查看你已成功加载的包的数据集

> data()


需要更完整的列表,包括以安装的所有包的数据

> data(package = .packages(TRUE))


read,tabke 函数可用于读取以空格符为分隔的文件 read.csv 函数默认设置分隔符为逗号,read.csv2默认以逗号作为小数位 skip用于跳过几行 nrow 是指定读取的行数

read.delim和read.delim2分别使用句号和小数位作为分隔符

> crab_file <- system.file("extdata","crabtag.csv",package = "learningr")
> (crab_id_block <- read.csv(crab_file,header = TRUE,skip = 3,nrows = 2))
                               Firmware.Version.No X2
1                             Firmware Build Level 70
2 The following data are the Tag notebook contents NA
crabtag.csv默认安装在extdata文件夹下

readLInes函数用来读取非结构化文本文件 先读入文件中所有的文本行,再对其内容进行操作

> text_file <- system.file("extdata","Shakespeare's The Tempest,from Project Gutenberg pg2235.txt",package = "learningr")
> the_tempest <- readLines(text_file)
Warning message:
In file(con, "r") :
  file("") only supports open = "w+" and open = "w+b": using the former
> the_tempest[1926:1927]
[1] NA NA

可以读取XML文件 首先安装包

> install.packages("XML")
xmLParse函数来导入XML数据

> library(XML)
> xml_file <- system.file("extdata","options.xml",package = "learningr")
> r_option <- xmlParse(xml_file)

使用内部节点的一个问题就是 不能用head 和str函数,要使用R级函数的  可以用以下两种方法 
> xmlParse(xml_file,useInternalNodes = FALSE)
$doc
$file
[1] "E:/RsoftWare/R-3.2.2/library/learningr/extdata/options.xml"

$version
[1] "1.0"

$children
$children$root
<root>
 <variable name="add_smooth" type="character">
  <value>TRUE</value>

> xmlTreeParse(xml_file)
$doc
$file
[1] "E:/RsoftWare/R-3.2.2/library/learningr/extdata/options.xml"

$version
[1] "1.0"

$children
$children$root
<root>
 <variable name="add_smooth" type="character">
  <value>TRUE</value>
 </variable>
 <variable name="browserNLdisabled" type="character">
  <value>FALSE</value>

XPATH是用于查询XML文档的语言,过滤某些规则来寻找相应的节点, 寻找variable节点,此节点[]的name属性@包含了contains了warn字符串

这是对于文件截取后  也就是system,file文件操作后的文件进行操作

htmlParse 和 htmlTreeParse 适用于HTML页面导入的函数

XML包提供了序列化,即存储的功能

> library(Runiversal)
> 
> ops <- as.list(options())
> cat(makexml(ops),file = "options.xml")
我的电脑是默认存贮在D盘的文档中

JSON文件是WEB程序彼此之间传递数据的标准

两个包常用于处理JSON RJSONIO比较推荐 rjson有问题

::用于把相同名字的函数从不同的包中解析出来 首先就要下载包和加载包了 就不说了

> library(RJSONIO)
> library(rjson)


> city_file <- system.file("extdata","Jamaican Cities.json",package = "learningr")
> jamacia_city <- RJSONIO::fromJSON(city_file)
RJSON把每个城市的坐标都转化为向量,可以通过simplify = false 来关闭,产生的数据和rjson一样

RJSONIO把NAN和NA映射为JSON的null,但保留正负无穷rjson把这些值转化为字符串

yaml包常用于处理特殊数字类型 as,yaml则用于把R对象转化为YAML字符串

http://www.biostatistic.net/thread-74482-1-1.html 具体可以看这个文章 有关各个参数的解析

> special <- c(NaN,NA,Inf,-Inf)
Warning message:
closing unused connection 3 () 
> special
[1]  NaN   NA  Inf -Inf
> RJSONIO::toJSON(special)
[1] "[ null, null,   Infinity,  - Infinity ]"
Warning message:
In .local(x, container, collapse, ..., .level = .level, .withNames = .withNames,  :
  non-fininte values in numeric vector may not be approriately represented in JSON
> rjson::toJSON(special)
[1] "[\\"NaN\\",\\"NA\\",\\"Inf\\",\\"-Inf\\"]"




以上是关于R语言学习之获取数据的学习(XML和JSON文件的读取)的主要内容,如果未能解决你的问题,请参考以下文章

R语言 CSV文件

Java Web学习之XMl学习

Day08 JavaWeb学习之Xml 01

Snail—iOS网络学习之得到网络上的数据

Day09 JavaWeb学习之Xml 02

R语言XML文件