如何在R

时间:2016-05-12 12:47:40

标签: r dataframe grep

我有一个数据帧X,其中有两列名为" pattern"和"文字"在R. 我想在相应的文本中搜索每个模式。

为此我使用grepl命令。但是,grepl仅在以下场景中正常工作,它会找到一个模式并针对dataframe列的每一行进行测试:

grepl("findthis",X$text)

但是,当我执行以下操作时,它只会针对第二列的所有记录逐一检查第一列的第一条记录。

grepl(X$pattern,X$text)

我正在寻找一个函数,它将获取X $模式的第一个记录并在X $ text的第一个记录中检查它,然后获取X $模式的第二个记录并在X $的第二个记录中检查它测试

这可以通过一些库函数吗?

编辑:@akrun给出的解决方案按照我的要求工作。但是,我在嵌套的ifelse中使用了一系列grepl命令。简单地说它就像下面的代码(但有更多的嵌套):

X$result = ifelse(grepl(X$pattern,X$text),1,ifelse(grepl("abc",X$email),2,3)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

一个选项是Map/mapply

 unname(mapply(grepl, X$pattern, X$text))
 #[1]  TRUE FALSE

数据

X <- data.frame(text = c("find this text", "Something else"),
     pattern = c("find this", "find that"), stringsAsFactors=FALSE)