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

标签 xml r

您好,我正在 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/

相关文章:

r - 计数表中的 ggplot2 箱线图

r - 为什么 $ 与线性模型的摘要不部分匹配?

java - 更新时 Recyclerview 移至底部

c# - XML 序列化最后生成随机字符串? C#

c# - 如何将 xml 文件作为资源添加到 Windows 窗体 exe

xml - VBScript从XML节点分配变量

java.lang.UnsupportedOperationException : Can't convert to color: type=0x1 异常

r - 即使所有值都 > 0,为什么 geom_histogram 从负 bin 下限开始?

按组回归

r - 将颜色插入到ggplot2中指定位置/值的刻度填充渐变中