【问题标题】:How do I find keywords in a character vector?如何在字符向量中找到关键字?
【发布时间】:2019-10-11 18:05:39
【问题描述】:

我是 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"

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

【问题讨论】:

    标签: r search vector keyword


    【解决方案1】:

    如果我们使用for 循环,请确保在每次迭代中都不会替换“结果”。此外,length 返回单个值,因此循环遍历它只是最后一个值keywords[length(keywords)],而不是seq_along(或1:length(keywords) - 更喜欢seq_along

    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"
    

    在这里,我们通过连接每次迭代并更新“结果”向量来更新“结果”


    如果我们将“关键字”创建为由| 分隔的pasted 单个字符串(或 - 匹配“颜色”向量中的任何关键字字符串),也可以不使用循环完成

    【讨论】:

      【解决方案2】:
      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"   
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多