Можете ли вы перечислить исключение для tidyselect `everything ()` - PullRequest
0 голосов
/ 24 октября 2019
library(tidyverse)
iris %>% as_tibble() %>% select(everything())

#> # A tibble: 150 x 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ... with 140 more rows

Скажем, я хочу выбрать все в iris фрейме данных, кроме Species. Как мне перечислить это одно исключение при использовании tidyselect::everything()?

Мой фактический канал ниже, и когда

... %>% 
group_by(`ID`) %>% 
fill(everything, .direction = "updown") %>% 
... %>% 

, и я получаю следующую ошибку:

Ошибка: столбец ID нельзя изменить, поскольку это переменная группировки

1 Ответ

0 голосов
/ 24 октября 2019

Вы бы сделали

iris %>% as_tibble() %>% select(-Species)

, но при условии, что у вас есть веские основания не хотеть этого, вот способ использования everything()

iris %>% as_tibble() %>% select(setdiff(everything(),match("Species",names(.))))
#> # A tibble: 150 x 4
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width
#>           <dbl>       <dbl>        <dbl>       <dbl>
#>  1          5.1         3.5          1.4         0.2
#>  2          4.9         3            1.4         0.2
#>  3          4.7         3.2          1.3         0.2
#>  4          4.6         3.1          1.5         0.2
#>  5          5           3.6          1.4         0.2
#>  6          5.4         3.9          1.7         0.4
#>  7          4.6         3.4          1.4         0.3
#>  8          5           3.4          1.5         0.2
#>  9          4.4         2.9          1.4         0.2
#> 10          4.9         3.1          1.5         0.1
#> # ... with 140 more rows

(или просто iris %>% as_tibble() %>% select(setdiff(everything(), 5)), если этоприемлемый)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...