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 NAcrabtag.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"]" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |