R 在另一列的字符串中搜索一列中的文本

R 在另一列的字符串中搜索一列中的文本,r,R,新手到这里来。一直在搜索这个论坛,试图找到一种方法来搜索同一行数据中字符串内的文本。我以前使用过grepl,但我无法让它向下查看一列并对每一行应用检查。我觉得这是一个简单的解决方案,但我已经花了几个小时,似乎无法得到它 基本上,我有类似于下面第1列的内容,需要它检查第2列中的文本是否在第1列中,然后在新列中返回true或false column 1 column2 result Target_US_Toy _US_ TRUE Target_CA_Toy

新手到这里来。一直在搜索这个论坛,试图找到一种方法来搜索同一行数据中字符串内的文本。我以前使用过grepl,但我无法让它向下查看一列并对每一行应用检查。我觉得这是一个简单的解决方案,但我已经花了几个小时,似乎无法得到它

基本上,我有类似于下面第1列的内容,需要它检查第2列中的文本是否在第1列中,然后在新列中返回true或false

column 1         column2     result
Target_US_Toy    _US_        TRUE
Target_CA_Toy    _MX_        FALSE
Target_NZ_Toy    _NZ_        TRUE

谢谢大家!

stringr
包装中使用
stru-detect

library(stringr)
str_detect(df1$column1, df1$column2)

[1]  TRUE FALSE  TRUE
或者仅使用base R将
grepl
与apply组合:

apply(df1,1, function(x){
  grepl(x[2], x[1])
})
[1]  TRUE FALSE  TRUE

我们可以使用
stringr
来实现这一点

首先,让我们创建一个数据帧:

df <- data.frame(column1 = c("Target_US_Toy", "Target_CA_Toy"),
                 column2 = c("_US_", "_NZ_"),
                 stringsAsFactors = FALSE)

您还可以将
grepl
Map

unlist(Map(grepl, df$column2, df$column1))
输出

 #_US_  _MX_  _NZ_ 
 #TRUE FALSE  TRUE 

基本方法是使用
mapply
将一组“并行”参数传递给未在其一个或多个参数位置进行矢量化的函数:

dat$ result <- mapply(grepl, dat$column2, dat$column1)

> dat
        column1 column2 result
1 Target_US_Toy    _US_   TRUE
2 Target_CA_Toy    _MX_  FALSE
3 Target_NZ_Toy    _NZ_   TRUE
dat$结果dat
第1列第2列结果
1个目标(我们)玩具(我们)正确
2个目标\u CA\u玩具\u MX\u错误
3目标玩具-正确

谢谢!!!我主要使用dplyr,还没有使用stringr。也许我该上下一门课
dat$ result <- mapply(grepl, dat$column2, dat$column1)

> dat
        column1 column2 result
1 Target_US_Toy    _US_   TRUE
2 Target_CA_Toy    _MX_  FALSE
3 Target_NZ_Toy    _NZ_   TRUE