R data frame string contains: Does column 1 contai

2019-03-02 02:51发布

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

3条回答
\"骚年 ilove
2楼-- · 2019-03-02 03:23

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
查看更多
聊天终结者
3楼-- · 2019-03-02 03:23

Here's a base R option using Vectorize with grepl:

df1$CheckEmail <- Vectorize(grepl)(df1$Surname, df1$Email)
查看更多
Anthone
4楼-- · 2019-03-02 03:36

Try with library("stringi") and:

df1$CheckEmail <- stri_detect_fixed(df1$Email, df1$Surname)
查看更多
登录 后发表回答