dplyr :: filter“未注册tidyselect变量”

Al3*_*xEP 3 regex r dplyr tidyverse tidyselect

我正在尝试使用该dplyr::filter()功能来过滤我的小标题的特定行。

这是我的小标题的一部分head(raw.tb)

A tibble: 738 x 4
      geno   ind     X     Y
     <chr> <chr> <int> <int>
 1 san1w16    A1   467   383
 2 san1w16    A1   465   378
 3 san1w16    A1   464   378
 4 san1w16    A1   464   377
 5 san1w16    A1   464   376
 6 san1w16    A1   464   375
 7 san1w16    A1   463   375
 8 san1w16    A1   463   374
 9 san1w16    A1   463   373
10 san1w16    A1   463   372
# ... with 728 more rows
Run Code Online (Sandbox Code Playgroud)

当我要求: raw.tb %>% dplyr::filter(ind == contains("A"))

我得到: Error in filter_impl(.data, quo) : Evaluation error: No tidyselect variables were registered

在我看来,unique(raw.tb$ind)是:

    [1] "A1"  "A10" "A11" "A12" "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "B1" 
[14] "B10" "B11" "B12" "B2"  "B3"  "B4"  "B5"  "B6"  "B7"  "B8"  "B9"  "C1"  "C10"
[27] "C11" "C12" "C2"  "C3"  "C4"  "C5"  "C6"  "C7"  "C8"  "C9"  "D1"  "D10" "D11"
[40] "D12" "D2"  "D3"  "D4"  "D5"  "D6"  "D7"  "D8"  "D9"  "E1"  "E10" "E11" "E12"
[53] "E2"  "E3"  "E4"  "E5"  "E6"  "E7"  "E8"  "E9"  "F1"  "F10" "F11" "F12" "F2" 
[66] "F3"  "F4"  "F5"  "F6"  "F7"  "F8"  "F9"  "G1"  "G10" "G11" "G2"  "G3"  "G4" 
[79] "G5"  "G6"  "G7"  "G8"  "G9"  "H1"  "H10" "H11"
Run Code Online (Sandbox Code Playgroud)

我想raw.tb$ind使用tidyverse语言仅提取以“ A”开头的行。

(我知道如何在基准R中做到这一点,但我的目标是使用tidyverse)。

非常感谢您的任何反馈

akr*_*run 6

filter期望的逻辑矢量来过滤行。所述select辅助(?select_helpers)函数contains来选择基于一些图案的数据集的列。为了过滤行,我们可以使用greplfrombase R

raw.tb %>%
   dplyr::filter(grepl("A", ind)) 
Run Code Online (Sandbox Code Playgroud)

str_detect来自stringrtidyverse

raw.tb %>%
  dplyr::filter(stringr::str_detect(ind, "A"))
Run Code Online (Sandbox Code Playgroud)