gpt4 book ai didi

xml - 我在 r 中使用 xml 时发现此错误消息

转载 作者:数据小太阳 更新时间:2023-10-29 02:12:15 28 4
gpt4 key购买 nike

您好,我正在 Rstudio 中处理 xml。目标是将 xml 转换为 r 数据框,我正在尝试包文件夹中名为 tides.xml 的示例数据。

tides = system.file("exampleData", "tides.xml", package = "XML")

也许我们可以看到前几列的项目是不变的:

像这样

                       origin
NOAA/NOS/CO-OPS
NOAA/NOS/CO-OPS
NOAA/NOS/CO-OPS
NOAA/NOS/CO-OPS
NOAA/NOS/CO-OPS
NOAA/NOS/CO-OPS
NOAA/NOS/CO-OPS

因此当我使用

xmlToDataFrame(xmlRoot(tides.str))

它返回错误:

Error in `[<-.data.frame`(`*tmp*`, i, names(nodes[[i]]), value = c("2010/11/13Sat06:08    AM4.74H",  : 
duplicate subscripts for columns

我知道我可以做这样的事情:

xmlToDataFrame(nodes = xmlChildren(xmlRoot(tides.str)[["data"]]))

生成一个数据框,但它只是一个子集,我需要手动插入前几列。

所以我在想,是否可以通过更改 xmlToDataFrame() 函数中的一些参数并使用整个 xml 数据来消除错误?

提前致谢。

最佳答案

我不确定 xmlToDataFrame 是否可行。但是您可以提取所有非数据节点并自己将其转换为 data.frame 而不会太麻烦。

library(XML)
tides = system.file("exampleData","tides.xml", package="XML")

tides.str<-xmlParse(tides)
detaildf<-xmlToDataFrame(nodes = getNodeSet(tides.str, "/datainfo/data/item"))

header <- getNodeSet(tides.str, "/datainfo/*[not(self::data)]")
headerdf <- as.data.frame(as.list(setNames(xmlSApply(header, xmlValue),
xmlSApply(header, xmlName))))

merge(headerdf, detaildf)

然后在最后我们只是“合并”这两个部分以在详细信息中重复每一行的标题。

关于xml - 我在 r 中使用 xml 时发现此错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792471/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com