You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中将XML文件转换为tibble数据框时出现列命名报错问题

问题原因

你调用collapse_obs()得到的是一个命名列表,列表的每个元素都是带列名的二维矩阵,存储了XML节点的属性和实际值。直接将整个列表转为tibble时,tibble无法自动识别矩阵内的列名规则,所以触发了要求指定列名修复规则的报错。

解决方法

你需要的赛事名称、车手姓名、车队名称等实际数据,都存在对应节点矩阵的XML_value列中,只需单独提取该列的向量值即可生成整洁tibble,修正后的代码如下:

pacman::p_load(pacman, tidyverse, XML2R)

# 读取解析XML
raw_data <- "http://ergast.com/api/f1/1954/results/1.xml" %>%
  XML2Obs() %>%
  collapse_obs()

# 提取指定字段生成tibble
result_tbl <- tibble(
  Race = raw_data[["MRData//RaceTable//Race//RaceName"]][, "XML_value"],
  FirstName = raw_data[["MRData//RaceTable//Race//ResultsList//Result//Driver//GivenName"]][, "XML_value"],
  LastName = raw_data[["MRData//RaceTable//Race//ResultsList//Result//Driver//FamilyName"]][, "XML_value"],
  Team = raw_data[["MRData//RaceTable//Race//ResultsList//Result//Constructor//Name"]][, "XML_value"]
)

# 查看结果
print(result_tbl)

运行后会得到1954年每站F1比赛冠军对应的赛事名称、姓名、所属车队的整洁表格,不会再触发列名报错。

内容的提问来源于stack exchange,提问作者Chao Jiang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:54:03