删除R中字符向量中的一行

时间:2015-08-02 16:06:55

标签: r

我有一个字符向量如下

<spec>
<h5><hdtitle>Tighten</hdtitle></h5>
Tighten the bolts to 10N m
(89lbin).
</spec>

我想根据连续行中发生Tighten的情况删除第2行<h5><hdtitle>Tighten</hdtitle></h5>

必需的输出

<spec>
Tighten the bolts to 10N m
(89lbin).
</spec>

1 个答案:

答案 0 :(得分:2)

由于您的示例看起来更像是HTML文档的一部分而不是字符向量,因此我建议您尝试使用XML包。它的removeNodes()函数使这项任务变得非常简单。

x <- '<spec>
<h5><hdtitle>Tighten</hdtitle></h5>
Tighten the bolts to 10N m
(89lbin).
</spec>'

library(XML)
doc <- htmlParse(x)
removeNodes(list(doc["//h5"][[1]]))
# NULL

然后我们

doc["//spec"][[1]]
# <spec>
# Tighten the bolts to 10N m
# (89lbin).
# </spec> 

你可以根据是否&#34;收紧&#34;发生在两行上,如

doc <- htmlParse(x)
s <- stringi::stri_count_fixed(xmlValue(doc["//spec"][[1]]), "Tighten")
if(s > 1) {
    removeNodes(list(doc["//h5"][[1]]))
}
doc["//spec"][[1]]
# <spec>
# Tighten the bolts to 10N m
# (89lbin).
# </spec>