R - 使用带有变量的 LIKE 运算符



我想从包中替换%like%函数中的变量而不是字符串DescTools。之后我想做的是有一个变量改变值的loop,我得到不同的结果。
我已经尝试了几种方法,但无法使其正常工作。
这是我的示例代码:

    library(DescTools)
    library(dplyr)
    x <- c(1,2,3,4,5,6)
    y <- c("a","b","c","a","a","a")
    df <- data.frame(x = x, y = y)
    df

这是我在x列中搜索"a"时得到的。这是所需的输出。

 df %>% filter(y %like% "%a%")
# desired output
> df %>% filter(y %like% "%a%")
  x y
1 1 a
2 4 a
3 5 a
4 6 a

现在我想创建一个变量来保存我要搜索的值

   # create a variable which will take out the value I'm looking for
        let <- '"%a%"'

如果我使用该变量代替string,我要么没有结果,要么得到错误的结果。
有什么方法可以使用字符串的变量插入吗?

#not working
df %>% filter(y %like% let)
> df %>% filter(y %like% let)
[1] x y
<0 rows> (or 0-length row.names)
#not working
df %>% filter(y %like% cat(let))
> df %>% filter(y %like% cat(let))
"%a%"  x y
1 1 a
2 2 b
3 3 c
4 4 a
5 5 a
6 6 a

选项 1:计算变量。

df %>% filter(y %like% eval(parse(text = let)))

选项 2:利用 dplyr 中的filter_功能。

df %>% filter_(paste0("y %like%", let))

编辑:实际上,评论是更好的答案,因为它不那么复杂---问题是报价级别。

相关内容

  • 没有找到相关文章

最新更新