gpt4 book ai didi

r - R : return NA if node is missing 中的 XPath

转载 作者:行者123 更新时间:2023-12-03 15:30:44 26 4
gpt4 key购买 nike

我正在尝试使用 R 中的 Xpath 在 html 文档中搜索节点。
在下面的代码中,我想知道如何在缺少节点时返回 NULL 或 NA:

library(XML)
b <- '
<bookstore specialty="novel">
<book style="autobiography">
<author>
<first-name>Joe</first-name>
<last-name>Bob</last-name>
</author>
</book>
<book style="textbook">
<author>
<first-name>Mary</first-name>
<last-name>Bob</last-name>
</author>
<author>
<first-name>Britney</first-name>
<last-name>Bob</last-name>
</author>
<price>55</price>
</book>
<book style="novel" id="myfave">
<author>
<first-name>Toni</first-name>
<last-name>Bob</last-name>
</author>
</bookstore>
'
doc2 <- htmlTreeParse(b, useInternal=T)
xpathApply(doc2, "//author/first-name", xmlValue)

例如,当我运行 xpathApply() 时对作者的函数我会得到 4 个结果,但是如果我要删除 <first-name> 之一节点,我想要 xpathApply函数返回一个 NULL 或其他东西在它的位置,我不希望它跳过它。如果我要删除 <first-name>Mary</first-name>,我希望结果看起来像这样:
Joe
NA
Britney
Tony

最佳答案

你可以这样做:

xpathApply(doc2, "//author",
function(x){
if("first-name" %in% names(x))
xmlValue(x[["first-name"]])
else NA})

[[1]]
[1] "Joe"

[[2]]
[1] NA

[[3]]
[1] "Britney"

[[4]]
[1] "Toni"

关于r - R : return NA if node is missing 中的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122098/

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