English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R XML ファイル

XMLは可拡張マークアップ言語(eXtensible Markup Language)の略で、データの送信と保存に設計されたものです。

R言語でXMLファイルを読み書きするには、拡張パッケージをインストールする必要があります。Rコントロール台に以下のコマンドを入力してインストールできます:

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

インストールが成功したか確認する:

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

sites.xmlファイルを作成し、テストスクリプトと同じディレクトリに配置します。以下のコード:

<sites>
    <site>
        <id>1</id>
        <name>Google</name>
        <url>www.google.com</url>
        <likes>111</likes>
    </site>
 
    <site>
        <id>2</id>
        <name>w3codebox</name>
        <url>ja.oldtoolbag.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ファイルのデータを読み込むことができます:

# XML パッケージをロード
library("XML")
# ファイル名を設定
result <- xmlParse(file = "sites.xml")
# 結果の出力
print(result)

XMLデータ量の統計:

# XML パッケージをロード
library("XML")
# ファイル名を設定
result <- xmlParse(file = "sites.xml")
# ルートノードの抽出
rootnode <- xmlRoot(result)
# 統計データ量
rootsize <- xmlSize(rootnode)
# 結果の出力
print(rootsize)

上記のコードを実行すると、出力結果が:

[1】 3

ノードデータを確認する、特定の行は[ ]を使用し、特定の行と列は[[ ]]を使用します:

# XML パッケージをロード
library("XML")
# ファイル名を設定
result <- xmlParse(file = "sites.xml")
# ルートノードの抽出
rootnode <- xmlRoot(result)
# 第 2 ノードデータ
print(rootnode[2])
# 第 2 ノードの第  1 データ
print(rootnode[[2]][[1]])
# 第 2 ノードの第 3 データ
print(rootnode[[2]][[3]])

上記のコードを実行すると、出力結果が:

$site
<site>
  <id>2</id>
  <name>w3codebox</name>
  <url>ja.oldtoolbag.com</url>
  <likes>222</likes>
</site> 
attr(,"class")
[1】 "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>ja.oldtoolbag.com</url>

XML をデータリストに変換

以上のコードはすべて xml フォーマットの出力です。xmlToList() 函数を使用してファイルデータをリスト形式に変換することで、読み取りがより簡単になります:

# XML パッケージをロード
library("XML")
# ファイル名を設定
result <- xmlParse(file = "sites.xml")
# リストに変換
xml_data <- xmlToList(result)
print(xml_data)
print("============================")
# 第一行第二列のデータを出力
print(xml_data[[1]][[2]])

上記のコードを実行すると、出力結果が:

$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] "w3codebox"
$site$url
[1] "ja.oldtoolbag.com"
$site$likes
[1] "222"
$site
$site$id
[1] "3"
$site$name
[1] "淘宝"
$site$url
[1] "www.taobao.com"
$site$likes
[1] "333"
[1] "============================"
[1] "Google"

XML 変換 データフレーム

XML ファイルデータはデータフレーム形式に変換できます。これにより、データ操作がより簡単になります:

# XML パッケージをロード
library("XML")
# xml ファイルデータをデータフレームに変換
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

上記のコードを実行すると、出力結果が:

  id   name            url likes
1  1 Google www.google.com   111
2  2 w3codebox ja.oldtoolbag.com   222
3  3 淘宝 www.taobao.com   333