在dplyr中应用基于字符串的过滤器矢量(或字符串矢量)

击倒

R和tidyverse有一些非常强大但同样神秘的方法,可以将字符串转换为可操作的表达式。我觉得需要成为一名专家才能真正了解如何使用它们。

注意:从这个问题的不同这一个中,我特别问的矢量(也就是多个)过滤条件。我演示了单个过滤器的解决方案,当我尝试将其扩展到多个过滤器的多种方式时,该解决方案失败了。

我想按照以下方式做一些事情:

df = data.frame(A=1:10, B=1:10)
df %>% filter(A<3, B<5)

但是如果过滤器包含在字符串(例如)"A<3, B<5"或字符向量(例如)中c("A<3", "B<5")

我可以

df %>% filter(eval(str2expression("A<3")))
#   A B
# 1 1 1
# 2 2 2

但这不起作用:

df %>% filter(eval(str2expression("A<3, B<5")))
Error in str2expression("A<3, B<5") : <text>:1:4: unexpected ','
1: A<3,
       ^

这些也不起作用:

> df %>% filter(!!c(str2expression("A<3"), str2expression("B<5")))
Error: Argument 2 filter condition does not evaluate to a logical vector
> df %>% filter(!!!c(str2expression("A<3"), str2expression("B<5")))
Error: Can't splice an object of type `expression` because it is not a vector
Run `rlang::last_error()` to see where the error occurred.

str2expression由于某种原因而评估表达式的向量仅适用于最后一个表达式:

> df %>% filter(eval(c(str2expression("A<3"), str2expression("B<5"))))
#   A B
# 1 1 1
# 2 2 2
# 3 3 3
# 4 4 4

使用评估表达式的向量完全失败:

> df %>% filter(!!!c(eval(str2expression("A<3")), eval(str2expression("B<5"))))
Error in eval(str2expression("A<3")) : object 'A' not found

我可以:

> df %>% filter(!!!c(expr(A<3), expr(B<5)))
#   A B
# 1 1 1
# 2 2 2

这告诉我,expr(A<3)这与str2expression("A<3")

但这不是从字符串开始的。

该怎么办?

击倒

从@Ronak Shah的答案中吸取教训,显然,在dplyr中,我可以使用多个条件,并使用一个&in过滤器而不是逗号。我完全不理解这一点-与逻辑上是不一样的

> df %>% filter(A<3 & B<5)
  A B
1 1 1
2 2 2
> df %>% filter(A<3 && B<5)
    A  B
1   1  1
2   2  2
3   3  3
4   4  4
5   5  5
6   6  6
7   7  7
8   8  8
9   9  9
10 10 10

但是,以下方法确实有效:

> df %>% filter(eval(str2expression("A<3 & B<5")))
  A B
1 1 1
2 2 2
> df %>% filter(eval(str2expression("A<6 & B<5")))
  A B
1 1 1
2 2 2
3 3 3
4 4 4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于矢量数据生成字符串

来自分类Dev

基于字符串条件的过滤行dplyr过滤器包含

来自分类Dev

如何基于R中的位置矢量替换字符串矢量中的字符?

来自分类Dev

基于URL哈希字符串的过滤器列表

来自分类Dev

基于字符串 Power BI 的过滤器求和

来自分类Dev

Xpath过滤器字符串中的多个值

来自分类Dev

使用字符串作为dplyr中的过滤器?

来自分类Dev

如何在字符串数组中映射字符串值的过滤器

来自分类Dev

如何在python中应用多列过滤器(字符串)

来自分类Dev

在mtext中对来自矢量元素的字符串使用粗体

来自分类Dev

如何基于Firebase字符串在列表上创建动态过滤器?

来自分类Dev

基于字符串数组的AngularJS过滤器几乎存在

来自分类Dev

修改表单上的查询字符串以添加基于其他字段的过滤器

来自分类Dev

字典和字符串数组的过滤器数组

来自分类Dev

Swift字符串过滤器数组

来自分类Dev

创建字符串过滤器比较的最佳方法?

来自分类Dev

如何为JSON生成过滤器字符串

来自分类Dev

如何创建字符串过滤器脚本?

来自分类Dev

从日期到字符串的细枝过滤器

来自分类Dev

PHP的TCPDF图像字符串过滤器

来自分类Dev

分隔字符串的Linq过滤器数组

来自分类Dev

与搜索字符串中同时存在的前缀和字符对应的过滤器数组

来自分类Dev

如何编写angularjs过滤器以搜索字符串片段/字符串序列

来自分类Dev

如何编写angularjs过滤器以搜索字符串片段/字符串序列

来自分类Dev

将CKEditor高级内容过滤器应用于字符串

来自分类Dev

AngularJS过滤器显示的记录不包含过滤器文本框中的字符串

来自分类Dev

将剑道网格过滤器字符串解析为过滤器对象

来自分类Dev

Elasticsearch过滤器不适用于字符串过滤器术语

来自分类Dev

基于字符串过滤和条件的Dplyr转换

Related 相关文章

  1. 1

    基于矢量数据生成字符串

  2. 2

    基于字符串条件的过滤行dplyr过滤器包含

  3. 3

    如何基于R中的位置矢量替换字符串矢量中的字符?

  4. 4

    基于URL哈希字符串的过滤器列表

  5. 5

    基于字符串 Power BI 的过滤器求和

  6. 6

    Xpath过滤器字符串中的多个值

  7. 7

    使用字符串作为dplyr中的过滤器?

  8. 8

    如何在字符串数组中映射字符串值的过滤器

  9. 9

    如何在python中应用多列过滤器(字符串)

  10. 10

    在mtext中对来自矢量元素的字符串使用粗体

  11. 11

    如何基于Firebase字符串在列表上创建动态过滤器?

  12. 12

    基于字符串数组的AngularJS过滤器几乎存在

  13. 13

    修改表单上的查询字符串以添加基于其他字段的过滤器

  14. 14

    字典和字符串数组的过滤器数组

  15. 15

    Swift字符串过滤器数组

  16. 16

    创建字符串过滤器比较的最佳方法?

  17. 17

    如何为JSON生成过滤器字符串

  18. 18

    如何创建字符串过滤器脚本?

  19. 19

    从日期到字符串的细枝过滤器

  20. 20

    PHP的TCPDF图像字符串过滤器

  21. 21

    分隔字符串的Linq过滤器数组

  22. 22

    与搜索字符串中同时存在的前缀和字符对应的过滤器数组

  23. 23

    如何编写angularjs过滤器以搜索字符串片段/字符串序列

  24. 24

    如何编写angularjs过滤器以搜索字符串片段/字符串序列

  25. 25

    将CKEditor高级内容过滤器应用于字符串

  26. 26

    AngularJS过滤器显示的记录不包含过滤器文本框中的字符串

  27. 27

    将剑道网格过滤器字符串解析为过滤器对象

  28. 28

    Elasticsearch过滤器不适用于字符串过滤器术语

  29. 29

    基于字符串过滤和条件的Dplyr转换

热门标签

归档