R XML 文件

XML 指的是可擴展標記語言(eXtensible Markup Language),XML 被設計用來傳輸和存儲數(shù)據(jù)。

R 語言讀寫 XML 文件需要安裝擴展包,我們可以在 R 到控制臺輸入以下命令來安裝:

install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")

查看是否安裝成功:

> any(grepl("XML",installed.packages()))
[1] TRUE

創(chuàng)建 sites.xml 文件,xml 文件與測試腳本同一目錄下,代碼如下:

<sites>
    <site>
        <id>1</id>
        <name>Google</name>
        <url>www.google.com</url>
        <likes>111</likes>
    </site>
 
    <site>
        <id>2</id>
        <name>Nhooo</name>
        <url>www.soo66.com</url>
        <likes>222</likes>
    </site>
 
    <site>
        <id>3</id>
        <name>Taobao</name>
        <url>www.taobao.com</url>
        <likes>333</likes>
    </site>
</sites>

接下來我們可以使用 XML 包來載入 xml 文件的數(shù)據(jù):

# 載入 XML 包
library("XML")


# 設置文件名
result <- xmlParse(file = "sites.xml")

# 輸出結果
print(result)

統(tǒng)計 xml 數(shù)據(jù)量:

# 載入 XML 包
library("XML")


# 設置文件名
result <- xmlParse(file = "sites.xml")

# 提取根節(jié)點
rootnode <- xmlRoot(result)

# 統(tǒng)計數(shù)據(jù)量
rootsize <- xmlSize(rootnode)

# 輸出結果
print(rootsize)

執(zhí)行以上代碼輸出結果為:

[1] 3

查看節(jié)點數(shù)據(jù),某一行使用 [ ], 指定的行和列使用 [[ ]]:

# 載入 XML 包
library("XML")

# 設置文件名
result <- xmlParse(file = "sites.xml")

# 提取根節(jié)點
rootnode <- xmlRoot(result)


# 查看第 2 個節(jié)點數(shù)據(jù)
print(rootnode[2])

# 查看第 2 個節(jié)點的第  1 個數(shù)據(jù)
print(rootnode[[2]][[1]])

# 查看第 2 個節(jié)點的第 3 個數(shù)據(jù)

print(rootnode[[2]][[3]])

執(zhí)行以上代碼輸出結果為:

$site
<site>
  <id>2</id>
  <name>Nhooo</name>
  <url>www.soo66.com</url>
  <likes>222</likes>
</site> 
attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>www.soo66.com</url>

XML 轉為數(shù)據(jù)列表

以上代碼對輸出都是 xml 格式,我們使用 xmlToList() 函數(shù)可以將文件對數(shù)據(jù)轉為列表格式,更方便讀?。?/p>

# 載入 XML 包
library("XML")


# 設置文件名
result <- xmlParse(file = "sites.xml")

# 轉為列表
xml_data <- xmlToList(result)

print(xml_data)
print("============================")

# 輸出第一行第二列的數(shù)據(jù)
print(xml_data[[1]][[2]])

執(zhí)行以上代碼輸出結果為:

$site
$site$id
[1] "1"
$site$name
[1] "Google"
$site$url
[1] "www.google.com"
$site$likes
[1] "111"
$site
$site$id
[1] "2"
$site$name
[1] "Nhooo"
$site$url
[1] "www.soo66.com"
$site$likes
[1] "222"
$site
$site$id
[1] "3"
$site$name
[1] "Taobao"
$site$url
[1] "www.taobao.com"
$site$likes
[1] "333"
[1] "============================"
[1] "Google"

XML 轉為數(shù)據(jù)框

XML 文件數(shù)據(jù)可以轉為數(shù)據(jù)框類型,這樣我們就更方便對數(shù)據(jù)進行操作:

# 載入 XML 包
library("XML")

# xml 文件數(shù)據(jù)轉為數(shù)據(jù)框
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

執(zhí)行以上代碼輸出結果為:

  id   name            url likes
1  1 Google www.google.com   111
2  2 Nhooo www.soo66.com   222
3  3 Taobao www.taobao.com   333
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清