R - 使用LIKE运算符和变量

时间:2018-04-19 06:43:00

标签: r search desctools

我想在%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

如果我找到&#34; a&#34;这就是我得到的。在x列中。这是期望的输出。

 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 个答案:

答案 0 :(得分:2)

选项1 :评估变量。

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

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

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

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