LearningR-XML
因?yàn)橐x取一個(gè)XML格式的數(shù)據(jù),學(xué)習(xí)整理XML包。
1.XML包
1.1. 載入XML文件
有兩種方法:
通過函數(shù)xmlTreeParse("file.xml")載入xml文件,如果不加入?yún)?shù),將獲得關(guān)于這個(gè)xml文件的所有信息。所以,這個(gè)函數(shù)通常配合xmlRoot()使用,比如xmlRoot(xmlTreeParse("file.xml"))以得到xml主體文件。
通過函數(shù)xmlTreeParse("file.xml", useInternalNodes = TRUE)來得到加入首行的xml文件主體
1.2. 獲取特定的節(jié)點(diǎn)
詳細(xì)XPath語(yǔ)言見XPath 語(yǔ)法
使用函數(shù)getNodeSet(doc, XPath)
XPath的常見用法:
獲取第一個(gè)son元素
/root/son[1]
獲取最后一個(gè)son元素
/root/son[last()]
獲取前兩個(gè)son元素
/root/son[position() < 3]
獲取任意son2元素
//son2
獲取任意son2的age屬性
//son2[@age]
獲取任意son2的age屬性等于18的元素
//son2[@age=18]
獲取root下所有元素
/root/*
獲取所有帶屬性的son元素
//son[@*]
節(jié)點(diǎn)相關(guān)函數(shù)
class(xmltop) #查看類
xmlName(node):查看根目錄名。
node[[1]]:查看第一個(gè)子目錄
node[1]]:查看第一個(gè)子目錄的第二個(gè)節(jié)點(diǎn)
xmlSize(node):該節(jié)點(diǎn)下字節(jié)點(diǎn)數(shù)量。
xmlAttrs(node):該節(jié)點(diǎn)屬性。
xmlGetAttr(node, attr):該節(jié)點(diǎn)某一屬性。
xmlValue(node):該節(jié)點(diǎn)值。
xmlChildren(node):該節(jié)點(diǎn)下的子節(jié)點(diǎn)。
1.3 xmlSApply和xmlApply
讀取節(jié)點(diǎn)的值
讀取節(jié)點(diǎn)的屬性值
1.4 xml格式轉(zhuǎn)dataframe
book <- getNodeSet(d, "//book") mybook <- sapply(book,xmlValue)#第一種方式,直接用xmlToDataFrame()函數(shù) xmlToDataFrame(d) #由于book[4]不規(guī)范,導(dǎo)致轉(zhuǎn)化失敗 xmlToDataFrame(xmlChildren(d)[["book"]]) xmlToDataFrame(getNodeSet(d, "//book[1]")) xmlToDataFrame(nodes = getNodeSet(d, "//book/title"))#第二種方式,數(shù)據(jù)格式處理專用包plyr library("plyr") #先轉(zhuǎn)成list,再轉(zhuǎn)dataframe MyBooks <- ldply(xmlToList(d), data.frame) MyBooks <- ldply(xmlToList(getNodeSet(d, "//book")), data.frame)#第三種方式,讀取單個(gè)值后組合為dataframe author <- xpathSApply(d, "//book/author", xmlValue) #對(duì)第四個(gè)book的author值做特殊處理 author4 <- xpathSApply(d, "//book[4]/author", xmlValue) author4 <- paste(author4, collapse = ", ") author <- c(author[1:3],author4) MyBooks <- data.frame(category=sapply(xmlChildren(d), xmlGetAttr, "category"),title=xpathSApply(d, "//book/title", xmlValue),author,year=xpathSApply(d, "//book/year", xmlValue),price=xpathSApply(d, "//book/price", xmlValue))總結(jié)
以上是生活随笔為你收集整理的LearningR-XML的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么能打开AOPR的日志文件
- 下一篇: 似然估计中为什么要取对数以GMM为例