2016-01-18 3 views
-1

Есть функция в R, которые могут реагировать на эти требования:R: сравнить и подмножество две строки

if string1 exists in string2 then remove string1 from string2 

Я прошел день поиска на такой функции. Таким образом, любая помощь будет оценена.

Edit:

У меня есть dataframe. Вот часть этого:

mark  name        ChekMark 
Caudalie Caudalie Eau démaquillante 200ml TRUE 
Mustela Mustela Bébé lait hydra corps 300ml TRUE 
Lierac Lierac Phytolastil gel prévention TRUE 

Я хочу, чтобы создать новый dataframe в ведьму знак не существует на название продукта.

Это моя конечная цель.

ответ

1

Вы можете использовать gsub и работать с регулярными выражениями:

gsub(" this part ", " ", "A Text where this part should be removed") 
# [1] "A Text where should be removed" 
gsub(" this part ", " ", "A Text where this 1 part should be removed") 
# [1] "A Text where this 1 part should be removed" 
+0

Я переключил свой dataframe на список, и я попытался использовать 'gsub', но для меня это не работает:' lst <-lapply (1: length (spl), function (i) {ifelse (spl [[ i]] $ CheckMark == TRUE, gsub (spl [[i]] $ nom_marque, '', spl [[i]] $ nom), spl [[i]])}) ' – sarah

+0

' gsub' и 'mapply 'разрешил проблему: ' df_mod = as.data.frame (mapply (gsub, data_mod $ marq, "", data_mod $ nom_det)) '. Спасибо за ваше время и ваши усилия. – sarah

1

Вы ищете string2.replace (string1, '')?

или вы можете:

>>> R = lambda string1, string2: string2.replace(string1, '') 
>>> R('abc', 'AAAabcBBB') 
'AAABBB' 
>>> 
+0

Да Я ищу чего-то вроде этого. Есть идеи ? – sarah

+0

'gsub' и' mapply' разрешил проблему: 'df_mod = as.data.frame (mapply (gsub, data_mod $ marq," ", data_mod $ nom_det))'. Спасибо за ваше время и ваши усилия. – sarah

Смежные вопросы