我有一个包含两列的数据框:
Surname Email
1 house greghouse@gmail.com
2 wilson johnwatson@gmail.com
我想创建一个逻辑向量,用于检查Surname
中是否包含Email
。结果应该是:
Surname Email CheckEmail
1 house greghouse@gmail.com TRUE
2 wilson johnwatson@gmail.com FALSE
我尝试grep
但似乎grep
只能在一个或多个实例中查找一个模式。 我特别需要在多个实例中查找多个模式。
> grep(df1$Surname,df1$Email)
[1] 1
Warning message:
In grep(df1$Surname, df1$Email) :
argument 'pattern' has length > 1 and only the first element will be used
答案 0 :(得分:6)
这是使用mapply
grepl
的基本R方法:
transform(df, CheckEmail = mapply(grepl, Surname, Email))
# Surname Email CheckEmail
#1 house greghouse@gmail.com TRUE
#2 wilson johnwatson@gmail.com FALSE
答案 1 :(得分:5)
尝试使用library("stringi")
和:
df1$CheckEmail <- stri_detect_fixed(df1$Email, df1$Surname)
答案 2 :(得分:4)
以下是使用Vectorize
grepl
的基本R选项:
df1$CheckEmail <- Vectorize(grepl)(df1$Surname, df1$Email)