htmlParse缺失值NA

时间:2015-03-16 18:15:09

标签: xml r

我正在尝试使用R中的htmlParse(包:XML)从html文档中删除文本。在下面的代码中,我想知道如何在标记时返回NA(例如,< p class =“ neg“>”缺失:

<div class="review">
<p class="pos">positive</p><p class="neg">negative</p>
</div>
<div class="review">
<p class="pos">positive</p>
</div>
<div class="review">
<p class="pos">positive</p><p class="neg">negative</p>
</div>
<div class="review">
<p class="neg">negative</p>
</div>

我希望结果看起来像这样:

“积极”“否定”

“正面”NA

“积极”“否定”

NA“否定”

谢谢! Majesus

::::::::::::::::::::::::::::::::::::::::

克里斯, 我已经添加了一条新记录(hotel_name):

<div class="review">
<p class="pos">positive</p><p class="neg">negative</p>
</div>
<div class="review">
<p class="pos">positive</p>
</div>
<div class="review">
<p class="pos">positive</p><p class="neg">negative</p>
</div>
<div class="review">
<p class="neg">negative</p>
</div>

<div class="hotel">
<h3 class="hotel_name">Hotel Bla</h3>
</div>


y <-getNodeSet(doc, "//div")

y <- lapply(y, function(x){
       y  <- xpathSApply(x, ".//p[@class]", xmlValue)
 names(y) <- xpathSApply(x, ".//p[@class]", xmlGetAttr, "class") 
       y  
})

ldply(y, "rbind")


t <-getNodeSet(doc, "//div[@class='hotel']")

t <- lapply(t, function(x){
       t  <- xpathSApply(x, ".//h3[@class='hotel_name']", xmlValue)
 names(t) <- xpathSApply(x, ".//h3[@class='hotel_name']", xmlGetAttr, "class") 
       t  
})

ldply(t, "rbind")

如何在Excel中的表格(CSV)中组合记录(y和z)? “pos”,“neg”和“t”必须是同一个表中的列。重要的是,每个“pos”和每个“neg”可以由不同的换行符组成。我结合了cbind和write.table。但是,结果已取消配置。

1 个答案:

答案 0 :(得分:0)

您可以获取div节点并将命名向量列表返回给rbind

div <-getNodeSet(doc, "//div")

y <- lapply(div, function(x){
       y  <- xpathSApply(x, ".//p[@class]", xmlValue)
 names(y) <- xpathSApply(x, ".//p[@class]", xmlGetAttr, "class") 
       y  
})

ldply(y, "rbind")
       pos      neg
1 positive negative
2 positive     <NA>
3 positive negative
4     <NA> negative