R 教程
1. R 语言教程 2. R 环境安装 3. R 基础语法 4. R 注释 5. R 基础运算 6. R 数据类型 7. R 判断语句 8. R 循环 9. R 函数 10. R 字符串 11. R 列表 12. R 矩阵 13. R 数组 14. R 因子 15. R 数据框 16. R 包 17. R CSV 文件 18. R Excel 文件 19. R XML 文件 20. R JSON 文件 21. R MySQL 连接 22. R 绘图 – 饼图 23. R 绘图 – 条形图 24. R 绘图 – 中文支持 25. R 绘图 – 函数曲线图 26. R 绘图 – 散点图 27. Java 中操作 R

R XML 文件

R XML 文件

XML 指的是可扩展标记语言(eXtensible Markup Language),XML 被设计用来传输和存储数据。

如果你对 XML 还不了解,可以先查阅:XML 教程

R 语言读写 XML 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:

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

查看是否安装成功:

> any(grepl("XML",installed.packages()))

[1] TRUE

创建 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></name> <url>www..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></name>

  <url>www..com</url>

  <likes>222</likes>

</site> 



attr(,"class")

[1] "XMLInternalNodeList" "XMLNodeList"        

<id>2</id> 

<url>www..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] ""



$site$url

[1] "www..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 转为数据框

XML 文件数据可以转为数据框类型,这样我们就更方便对数据进行操作:

实例

# 载入 XML 包
library("XML")

# xml 文件数据转为数据框
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

执行以上代码输出结果为:


  id   name            url likes

1  1 Google www.google.com   111

2  2  www..com   222

3  3 Taobao www.taobao.com   333