r - 如何通过在 R 中解析 .xml 将字段数据提取为列表?
问题描述
我正在尝试创建一个数据框,其中包含从 xml 中提取的几个字段的值。我是 xml 文件的新手,不知道自己在做什么。
我已尝试按照此处发布的说明如何将 XML 解析为 R 数据框,但我无法使其正常工作。xml 的格式与 GENESET 中的许多其他字段(未显示)类似
<?xml version="1.0" encoding="ISO-8859-1"?>
-< MSIGDB BUILD_DATE="Jul 12, 2018" VERSION="6.2" NAME="msigdb">
< GENESET VALIDATION_DATASETS="" CATEGORY_CODE="C3" EXACT_SOURCE="GOID: 00098" STANDARD_NAME="AAANWWTGC_UNKNOWN"/>
理想情况下,我希望数据框的每一列只是 GENESET 中每个字段的值列表(即第 1 列 = CATEGORY_CODE;第 2 列 = EXACT_SOURCE)。如果特定 GENESET 的字段为空白,我还希望数据框具有 N/A。
我已经厌倦了这个:
require(XML)
doc <- xmlParse("msigdb_v6.2.xml")
exactSource <- as.list(xml_data[["MSIGDB"]][["GENESET"]][["EXACT_SOURCE"]])
但 head(exactSource) 的输出是
list()
请帮忙
解决方案
由于您只需要属性值,因此请考虑未记录的, xmlAttrsToDataFrame
, in XML
。
假设以下包含缺失节点和空属性的更完整的 XML 示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<MSIGDB BUILD_DATE="Jul 12, 2018" VERSION="6.2" NAME="msigdb">
<GENESET VALIDATION_DATASETS="" CATEGORY_CODE="C3" EXACT_SOURCE="GOID: 00096"/>
<GENESET VALIDATION_DATASETS="" EXACT_SOURCE="GOID: 00097" STANDARD_NAME="BBBNWWTGC_UNKNOWN"/>
<GENESET VALIDATION_DATASETS="" CATEGORY_CODE="C5" EXACT_SOURCE="GOID: 00098" STANDARD_NAME="CCCNWWTGC_UNKNOWN"/>
<GENESET VALIDATION_DATASETS="" CATEGORY_CODE="C6" EXACT_SOURCE="GOID: 00099" STANDARD_NAME=""/>
<GENESET VALIDATION_DATASETS="" CATEGORY_CODE="C7" STANDARD_NAME="EEENWWTGC_UNKNOWN"/>
</MSIGDB>
R
library(XML)
doc <- xmlParse("msigdb_v6.2.xml")
geneset_df <- XML:::xmlAttrsToDataFrame(getNodeSet(doc, path='//GENESET'))
geneset_df
# VALIDATION_DATASETS CATEGORY_CODE EXACT_SOURCE STANDARD_NAME
# 1 C3 GOID: 00096 <NA>
# 2 <NA> GOID: 00097 BBBNWWTGC_UNKNOWN
# 3 C5 GOID: 00098 CCCNWWTGC_UNKNOWN
# 4 C6 GOID: 00099
# 5 C7 <NA> EEENWWTGC_UNKNOWN
推荐阅读
- identityserver4 - IdentityServer4 跨不同身份验证流维护会话 ID
- mysql - 为什么我不能添加外键约束?
- javascript - React教程函数calculateWinner(squares)看不懂
- bash - 如何对使用各种约定编号的文件名进行排序
- javascript - 类型 'void' 不可分配给类型 '((event: MouseEvent
) => 无效) | 不明确的' - python - 对 Steam 的 HTTP 请求给出 401 响应
- django - 将对象属性总和添加到 Django Rest 框架响应
- office365 - Word 加载项清单文件 - 任务窗格 URL 不接受 MVC
- android - Android 单元测试在 android studio 中永远运行
- android - 从对象数组中删除重复项