R数据框架字符串包含:第1列是否包含第2列?

时间:2016-01-11 09:14:15

标签: r string dataframe contains

我有一个包含两列的数据框:

  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

3 个答案:

答案 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)