Не могу использовать лямбда-функцию в стиле purrr с `select ()` (dplyr 1.0.0 dev) - PullRequest
1 голос
/ 18 апреля 2020

(в настоящее время я использую версию dplyr 1.0.0 для разработки)

При использовании dplyr 1.0.0 across() должен заменять все глаголы области действия. Но когда я пытаюсь использовать функцию в стиле purrr с select(), как вы можете с select_if(), это выдает ошибку, и единственный найденный мной обходной путь - использовать замененное select_if().

В документации scoped select_all теперь говорится, что "select_if () и rename_if () уже используют аккуратный выбор, поэтому их нельзя заменить на cross (), и вместо этого нам нужна новая функция."

Любой совет? Заранее благодарим!

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

df <- tibble(x = c(1,2,3), y = c(4,5,NA), 
             z = c(NA, NA, NA), a = c("1", "2", "3"))

select(df, is.numeric | contains("a"))
#> # A tibble: 3 x 3
#>       x     y a    
#>   <dbl> <dbl> <chr>
#> 1     1     4 1    
#> 2     2     5 2    
#> 3     3    NA 3

select(df, ~!all(is.na(.)))
#> Error: Must subset columns with a valid subscript vector.
#> x Subscript has the wrong type `formula`.
#> ℹ It must be numeric or character.

select_if(df, ~!all(is.na(.)))
#> # A tibble: 3 x 3
#>       x     y a    
#>   <dbl> <dbl> <chr>
#> 1     1     4 1    
#> 2     2     5 2    
#> 3     3    NA 3

Создано в 2020-04-17 пакетом представительство (v0.3.0)

1 Ответ

0 голосов
/ 18 апреля 2020

Мы могли бы передать обычную анонимную функцию на select

library(dplyr)
select(df, function(x) !all(is.na(x)))
# A tibble: 3 x 3
#     x     y a    
#  <dbl> <dbl> <chr>
#1     1     4 1    
#2     2     5 2    
#3     3    NA 3    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...