R:想要检查一组单词中的任何元素是否出现在某个字符串中

时间:2017-09-08 15:51:21

标签: r text-manipulation

假设我有一个名为items的数据框,第一列是ItemNames。我想查看items$ItemNames中的每个项目,并检查它们是否包含以下任何一个词:

words = c("apple","Apple","Pear","pear")

如果有,请用单词"confirmed"替换整个字符串。

我尝试了什么:

我使用for循环和if语句的组合来执行此操作但失败了:

search = function(x){
    words = c("apple","Apple","Pear","pear")
    for (i in length(x)){
        if (grepl(words, x[1][i]) == TRUE){  #where x[1][i] is the individual element in the ItemNames.
            x[1][i] = "confirmed"}
    }
}

search(items)

它不起作用。理想情况下,ItemNames中的所有名称都应替换为“已确认”,如果它们包含words中的任何元素。

1 个答案:

答案 0 :(得分:0)

使用> microbenchmark( y<-as.vector(x), y<-x[1:length(x)], y<-array(x), y<-c(x), times=1e4) Unit: microseconds expr min lq mean median uq max neval y <- as.vector(x) 8.251 13.1640 29.02656 14.4865 15.7900 69933.707 10000 y <- x[1:length(x)] 59.709 70.8865 97.45981 73.5775 77.0910 75042.933 10000 y <- array(x) 9.940 15.8895 26.24500 17.2330 18.4705 2106.090 10000 y <- c(x) 22.406 33.8815 47.74805 40.7300 45.5955 1622.115 10000

optim()