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文件的读取)的主要内容,如果未能解决你的问题,请参考以下文章