首页 > 解决方案 > 如何在字符向量中找到关键字?

问题描述

我是 r 的新手,我正在尝试找到一种针对字符向量执行关键字搜索的方法。

我试图建立一个循环来将关键字与向量进行比较。当我运行循环时,我得到的只是代码的重复。

for(i in length(keywords)){
result = grep((keywords[i]), colours, value = TRUE)
}

如果我在循环之外运行 grep 并将 i 替换为 say 2 我得到

[1]“绿白红”“灰白蓝”

这是我正在寻找的输出。

colours = c("blue yellow green",
           "orange brown black",
           "green white red",
           "turquoise brown crimson",
           "maroon purple navy",
           "grey white blue",
           "aquamarine seagreen olive",
           "khaki lemon sienna")

keywords = c("lemon",
             "white",
             "khaki",
             "blue",
             "pink")

for(i in length(keywords)){
result = grep((keywords[i]), colours, value = TRUE)
}

代码运行后,我想创建一个名为 result 的新向量,在此示例中包含以下元素:

"khaki lemon sienna"
"green white red" 
"grey white blue"
"khaki lemon sienna"
"blue yellow green" 
"grey white blue"

我将非常感谢有关如何正确执行此操作的建议

标签: rsearchvectorkeyword

解决方案


unlist(lapply(keywords, function(k) colours[grepl(k, colours)]))
#OR
colours[unlist(lapply(keywords, grep, colours))]
#[1] "khaki lemon sienna" "green white red"    "grey white blue"    "khaki lemon sienna"
#[5] "blue yellow green"  "grey white blue"   

推荐阅读