检查哪些单词在另一个向量的单词中至少出现一次

时间:2016-03-07 06:14:48

标签: r string matching word

我们说我们有一个单词列表:

public class Flower
{

    private int randomRoses;
    private int randomTulips;
    private int randomOrchids;
    public ArrayList <Integer> flowerArray;

    public Flower()
    {
        r = new Random();
        t = new Random();
        o = new Random();
        int randomRoses = (r.nextInt(10) + 0);
        int randomTulips = (t.nextInt(10) + 0);
        int randomOrchids = (o.nextInt(10) + 0);
        flowerArray = new ArrayList<Integer>
    }

    public void add2Array ()
    {
        flowerArray.add(randomRoses); //flowerArray[0] is the # of roses
        flowerArray.add(randomTulips); //flowerArray[1] is the # of tulips
        flowerArray.add(randomOrchids); //flowerArray[2] is the # of orchids
    }

    public void printArray()
    {
        System.out.println(flowerArray[0]);
    }

现在我有另一个字符串变量:

words = c("happy","like","chill")

我想检查单词中哪个单词具有s中的匹配部分。 所以s可以是&#34; happyTime&#34;,&#34; happyFace&#34;,&#34; happyHour&#34 ;,但只要有&#34;快乐&#34;在那里,我希望我的结果返回单词的索引&#34; happy&#34;在字符串向量字。

此问题与帖子中提出的问题相似但不完全相同:Find a string in another string in R

2 个答案:

答案 0 :(得分:2)

您可以使用if(variableName) doSomething(); 来浏览您使用sapply搜索的每个字词,以确定该字词是否出现在grepl中:

s

如果sapply(words, grepl, s) # happy like chill # TRUE FALSE FALSE 只是一个单词,那么带有s的{​​{1}}会返回一个逻辑向量,您可以使用该向量来确定匹配的单词:

sapply

grepl包含多个单词时,带有words[sapply(words, grepl, s)] # [1] "happy" 的{​​{1}}会返回一个逻辑矩阵,您可以使用列总和来确定哪些单词至少出现一次:

s

答案 1 :(得分:1)

以下是使用stri_detect

stringi的选项
library(stringi)
words[stri_detect_regex(s, words)]
#[1] "happy"