Dplyr filter matrices

As of dplyr 1.1.0, we get warnings about using 1-d matrices instead of logical vectors.

Warning: Using one column matrices in `filter()` was deprecated in dplyr 1.1.0.
ℹ Please use one dimensional logical vectors instead.

This is hard to find and debug, because the warning is lifecycle-limited, but setting the lifecycle warning options makes it possible.

rlang::local_options(lifecycle_verbosity = "warning")

In most cases, it seems to happen with the column name to filter on as a character. It is a strange pattern, but comes up a fair amount programming.

filtercol <- 'Species'

iris |> 
  dplyr::filter(dplyr::across(tidyselect::any_of(filtercol)) == 'virginica')
Warning: Using one column matrices in `filter()` was deprecated in dplyr 1.1.0.
ℹ Please use one dimensional logical vectors instead.
   Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1           6.3         3.3          6.0         2.5 virginica
2           5.8         2.7          5.1         1.9 virginica
3           7.1         3.0          5.9         2.1 virginica
4           6.3         2.9          5.6         1.8 virginica
5           6.5         3.0          5.8         2.2 virginica
6           7.6         3.0          6.6         2.1 virginica
7           4.9         2.5          4.5         1.7 virginica
8           7.3         2.9          6.3         1.8 virginica
9           6.7         2.5          5.8         1.8 virginica
10          7.2         3.6          6.1         2.5 virginica
11          6.5         3.2          5.1         2.0 virginica
12          6.4         2.7          5.3         1.9 virginica
13          6.8         3.0          5.5         2.1 virginica
14          5.7         2.5          5.0         2.0 virginica
15          5.8         2.8          5.1         2.4 virginica
16          6.4         3.2          5.3         2.3 virginica
17          6.5         3.0          5.5         1.8 virginica
18          7.7         3.8          6.7         2.2 virginica
19          7.7         2.6          6.9         2.3 virginica
20          6.0         2.2          5.0         1.5 virginica
21          6.9         3.2          5.7         2.3 virginica
22          5.6         2.8          4.9         2.0 virginica
23          7.7         2.8          6.7         2.0 virginica
24          6.3         2.7          4.9         1.8 virginica
25          6.7         3.3          5.7         2.1 virginica
26          7.2         3.2          6.0         1.8 virginica
27          6.2         2.8          4.8         1.8 virginica
28          6.1         3.0          4.9         1.8 virginica
29          6.4         2.8          5.6         2.1 virginica
30          7.2         3.0          5.8         1.6 virginica
31          7.4         2.8          6.1         1.9 virginica
32          7.9         3.8          6.4         2.0 virginica
33          6.4         2.8          5.6         2.2 virginica
34          6.3         2.8          5.1         1.5 virginica
35          6.1         2.6          5.6         1.4 virginica
36          7.7         3.0          6.1         2.3 virginica
37          6.3         3.4          5.6         2.4 virginica
38          6.4         3.1          5.5         1.8 virginica
39          6.0         3.0          4.8         1.8 virginica
40          6.9         3.1          5.4         2.1 virginica
41          6.7         3.1          5.6         2.4 virginica
42          6.9         3.1          5.1         2.3 virginica
43          5.8         2.7          5.1         1.9 virginica
44          6.8         3.2          5.9         2.3 virginica
45          6.7         3.3          5.7         2.5 virginica
46          6.7         3.0          5.2         2.3 virginica
47          6.3         2.5          5.0         1.9 virginica
48          6.5         3.0          5.2         2.0 virginica
49          6.2         3.4          5.4         2.3 virginica
50          5.9         3.0          5.1         1.8 virginica

The solution is to use .data

iris |> 
  dplyr::filter(.data[[filtercol]] == 'virginica')
   Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1           6.3         3.3          6.0         2.5 virginica
2           5.8         2.7          5.1         1.9 virginica
3           7.1         3.0          5.9         2.1 virginica
4           6.3         2.9          5.6         1.8 virginica
5           6.5         3.0          5.8         2.2 virginica
6           7.6         3.0          6.6         2.1 virginica
7           4.9         2.5          4.5         1.7 virginica
8           7.3         2.9          6.3         1.8 virginica
9           6.7         2.5          5.8         1.8 virginica
10          7.2         3.6          6.1         2.5 virginica
11          6.5         3.2          5.1         2.0 virginica
12          6.4         2.7          5.3         1.9 virginica
13          6.8         3.0          5.5         2.1 virginica
14          5.7         2.5          5.0         2.0 virginica
15          5.8         2.8          5.1         2.4 virginica
16          6.4         3.2          5.3         2.3 virginica
17          6.5         3.0          5.5         1.8 virginica
18          7.7         3.8          6.7         2.2 virginica
19          7.7         2.6          6.9         2.3 virginica
20          6.0         2.2          5.0         1.5 virginica
21          6.9         3.2          5.7         2.3 virginica
22          5.6         2.8          4.9         2.0 virginica
23          7.7         2.8          6.7         2.0 virginica
24          6.3         2.7          4.9         1.8 virginica
25          6.7         3.3          5.7         2.1 virginica
26          7.2         3.2          6.0         1.8 virginica
27          6.2         2.8          4.8         1.8 virginica
28          6.1         3.0          4.9         1.8 virginica
29          6.4         2.8          5.6         2.1 virginica
30          7.2         3.0          5.8         1.6 virginica
31          7.4         2.8          6.1         1.9 virginica
32          7.9         3.8          6.4         2.0 virginica
33          6.4         2.8          5.6         2.2 virginica
34          6.3         2.8          5.1         1.5 virginica
35          6.1         2.6          5.6         1.4 virginica
36          7.7         3.0          6.1         2.3 virginica
37          6.3         3.4          5.6         2.4 virginica
38          6.4         3.1          5.5         1.8 virginica
39          6.0         3.0          4.8         1.8 virginica
40          6.9         3.1          5.4         2.1 virginica
41          6.7         3.1          5.6         2.4 virginica
42          6.9         3.1          5.1         2.3 virginica
43          5.8         2.7          5.1         1.9 virginica
44          6.8         3.2          5.9         2.3 virginica
45          6.7         3.3          5.7         2.5 virginica
46          6.7         3.0          5.2         2.3 virginica
47          6.3         2.5          5.0         1.9 virginica
48          6.5         3.0          5.2         2.0 virginica
49          6.2         3.4          5.4         2.3 virginica
50          5.9         3.0          5.1         1.8 virginica