我有一个 Dataframe ,看起来像这样:
| 字符串|字|
| - ------|- ------|
| 美味红苹果1号|苹果|
| 美味的红苹果和香蕉|苹果|
| 美味的香蕉、苹果和桃子|苹果|
| 美味香蕉和桃子|香蕉|
| 美味的桃子和苹果|桃子|
我想删除Word列中给定单词后面的所有单词,并保留该单词。
| 字符串|字|之后|
| - ------|- ------|- ------|
| 美味红苹果1号|苹果|美味的红苹果|
| 美味的红苹果和香蕉|苹果|美味的红苹果|
| 美味的香蕉、苹果和桃子|苹果|美味的香蕉苹果|
| 美味香蕉和桃子|香蕉|美味香蕉|
| 美味的桃子和苹果|桃子|鲜桃|
有人知道怎么做吗?
string <- с("tasty red apple number 1", "tasty red apple and banana", "tasty banana and apple and peach", "tasty banana and peach", "tasty peach and apple")
word <- c("apple", "apple", "apple", "banana", "peach")
4条答案
按热度按时间pbpqsu0x1#
我们可以捕获字符(
(...)
)直到'Word'作为一个组,然后在replacement
(str_replace
)中使用捕获组的反向引用(\\1
)。.*
表示我们丢弃的其余字符。str_replace
也被向量化以进行替换,因此我们不需要任何循环数据
2w2cym1i2#
在
mapply
中对gsub
使用lookbehind以删除字符串中不需要的部分。ttvkxqim3#
试试这个:
在这里我们(i)将
Word
Package 到字边界\\b
中以防止包含Word
值的较大字(例如,“dapple”和“apple”)被匹配。(ii)我们将该子串用括号括起来,以将其强制到捕获组中,然后我们(iii)在str_replace
替换自变量中引用,而捕获组(.*
)之后的任何内容都被省略。ohfgkhjo4#
您也可以使用
str_extract
而不是str_replace
来获得稍微简单的语法: