当前位置: 首页 > news >正文

R 语言学习教程,从入门到精通,R XML 文件使用(19)

1、R XML 文件

XML 指的是可扩展标记语言(eXtensible Markup Language),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>Nhooo</name><url>www.cainiaojc.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>Nhooo</name><url>www.cainiaojc.com</url><likes>222</likes>
</site> 
attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>www.cainiaojc.com</url>

1.1、XML 转为数据列表

以上代码对输出都是 xml 格式,我们使用 xmlToList() 函数可以将文件对数据转为列表格式,更方便读取:

# 载入 XML 包
library("XML")
# xml 文件数据转为数据框
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

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

 id   name            url likes
1  1 Google www.google.com   111
2  2 Nhooo www.cainiaojc.com   222
3  3 Taobao www.taobao.com   333

http://www.mrgr.cn/news/8707.html

相关文章:

  • 【单片机】PICC编译器和XC8编译器的历史发展,有什么关系
  • fpga图像处理实战-闭运算
  • 初识C语言指针(5)
  • 巨省成本的电子版招生简章越来越流行,你知道是怎么制作的吗?
  • Java | Leetcode Java题解之第367题有效的完全平方数
  • 第六届土木工程、环境资源与能源材料国际学术会议(CCESEM 2024,10月18-20)
  • Linux网络基础
  • GAP技术:实现隔离网络之间安全数据交换的创新方案
  • JVM-Java的四种引用
  • 基于springmvc实现文件上传
  • 【Linux篇】Linux的用户和权限
  • JUC- Synchronized原理
  • 深度学习100问2-分布式假设在自然语言处理中的应用场景有哪些
  • Git(面试篇)
  • linux安装python3.11.9
  • C语言从头学50—变量说明符
  • esp32c3 luaos
  • 【STM32项目】在FreeRtos背景下的实战项目的实现过程(三)
  • Docker的安装与镜像配置
  • 【线性代数】【二】2.10 标准正交基与正交矩阵