我正在尝试使用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。但是,结果已取消配置。
答案 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