2015-08-02 2 views
1

У меня есть вектор символов следующегоУдалить строку в векторе символов в R

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

Я хочу удалить строку 2 <h5><hdtitle>Tighten</hdtitle></h5> исходя из условия, что происходит в Затянуть последовательные линии.

Обязательного выход

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

Это не очень похожи на персонажа вектор будет. Можете ли вы добавить вывод из 'dput()' на примере, пожалуйста. –

ответ

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> 

И вы можете основывать это ли «затянуть» происходит на обоих линиях с чем-то вроде

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>