R 基于双重条件替换字符串

R 基于双重条件替换字符串,r,regex,stringr,R,Regex,Stringr,假设我有一个数据帧: df <- data.frame(a=c("m,dt,f,m","dt,t,d,e","m,t,e,x", "m,x,dt,f")) df使用lookaheads的完整示例: library("stringr") df <- data.frame(a=c("m,dt,f,m","dt,t,d,e","m,t,e,x", "m,x,dt,f"), stringsAsFactors = FALSE) df$a[str_detect(df$a, "(?=.*\\bm

假设我有一个数据帧:

df <- data.frame(a=c("m,dt,f,m","dt,t,d,e","m,t,e,x", "m,x,dt,f"))

df使用lookaheads的完整示例:

library("stringr")
df <- data.frame(a=c("m,dt,f,m","dt,t,d,e","m,t,e,x", "m,x,dt,f"), stringsAsFactors = FALSE)
df$a[str_detect(df$a, "(?=.*\\bm\\b)(?=.*\\bdt\\b)")] = "John"
df

df$a[grepl((?=.*dt)(?=.*m)”,df$a,perl=TRUE)]另一个更安全的选项
df$a[with(df,grepl(“dt”,a)和grepl(“m,a))]太棒了!不要以为你能解释,或者让我看一些解释边界部分的文本?当然:
library("stringr")
df <- data.frame(a=c("m,dt,f,m","dt,t,d,e","m,t,e,x", "m,x,dt,f"), stringsAsFactors = FALSE)
df$a[str_detect(df$a, "(?=.*\\bm\\b)(?=.*\\bdt\\b)")] = "John"
df
(?=.*\bm\b)   # looking for m with "boundaries
(?=.*\bdt\b)  # looking for dt with "boundaries"