I have a dataframe with two columns:
Surname Email
1 house greghouse@gmail.com
2 wilson johnwatson@gmail.com
I want to create a logical vector which checks if Surname
is contained in Email
. The result should therefore be:
Surname Email CheckEmail
1 house greghouse@gmail.com TRUE
2 wilson johnwatson@gmail.com FALSE
I tried grep
but it seems that grep
can only look for one pattern in 1 or more instances. I specifically need to look for multiple patterns in multiple instances.
> 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
Try with library("stringi")
and:
df1$CheckEmail <- stri_detect_fixed(df1$Email, df1$Surname)
Here's a base R approach using mapply
with grepl
:
transform(df, CheckEmail = mapply(grepl, Surname, Email))
# Surname Email CheckEmail
#1 house greghouse@gmail.com TRUE
#2 wilson johnwatson@gmail.com FALSE
Here's a base R option using Vectorize
with grepl
:
df1$CheckEmail <- Vectorize(grepl)(df1$Surname, df1$Email)
来源:https://stackoverflow.com/questions/34717733/r-data-frame-string-contains-does-column-1-contain-column-2