在case_when中如何使用tidydots?

时间:2019-03-31 17:38:05

标签: r rlang tidyeval

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> 的文档指出:“这些点支持整齐的点功能。特别是,如果您的图案存储在列表中,则可以使用!!!进行拼接。”但是我似乎不知道该怎么做。关于这个问题的现有问题似乎已经过时了-也许是在rlang 0.3.0之前。

这是我尝试过的:

dplyr::case_when

1 个答案:

答案 0 :(得分:3)

一种选择是创建一个法定货币(quos),然后使用!!!

my_cases <-   quos(Species == "setosa" ~ "S", 
                    TRUE ~ "other")

out <-  tiris %>% 
            mutate(new_lable = case_when(!!! my_cases))
head(out, 3)
# A tibble: 3 x 6
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species new_lable
#         <dbl>       <dbl>        <dbl>       <dbl> <fct>   <chr>    
#1          5.1         3.5          1.4         0.2 setosa  S        
#2          4.9         3            1.4         0.2 setosa  S        
#3          4.7         3.2          1.3         0.2 setosa  S        

tail(out, 3)
# A tibble: 3 x 6
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species   new_lable
#         <dbl>       <dbl>        <dbl>       <dbl> <fct>     <chr>    
#1          6.5         3            5.2         2   virginica other    
#2          6.2         3.4          5.4         2.3 virginica other    
#3          5.9         3            5.1         1.8 virginica other