R 如何在字符向量中查找关键字?

R 如何在字符向量中查找关键字?,r,search,vector,keyword,R,Search,Vector,Keyword,我是r的新手,我正试图找到一种方法来对字符向量执行关键字搜索 我试图建立一个循环,将关键字与向量进行比较。当我运行循环时,我得到的只是代码的重复 for(i in length(keywords)){ result = grep((keywords[i]), colours, value = TRUE) } 如果我在循环外运行grep,并用2代替I,我得到 [1] “绿-白-红”“灰-白-蓝” 这就是我想要的输出 colours = c("blue yellow green",

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

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

for(i in length(keywords)){
result = grep((keywords[i]), colours, value = TRUE)
}
如果我在循环外运行grep,并用2代替I,我得到

[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"

如果我们使用
for
循环,请确保在每次迭代中不替换“result”(结果),我将非常感谢您提供有关如何正确执行此操作的建议。另外,
length
返回一个值,因此循环遍历它只是最后一个值
keywords[length(keywords)]
,它可以是
seq\u沿途
(或者
1:length(keywords)
-更喜欢
沿途

结果
result <- c()
for(i in seq_along(keywords)){
 result <- c(result, grep((keywords[i]), colours, value = TRUE))
 }

result
#[1] "khaki lemon sienna" "green white red"    "grey white blue"  
#[4]  "khaki lemon sienna" "blue yellow green"  "grey white blue"
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"