【发布时间】:2017-12-02 23:38:33
【问题描述】:
我希望能够以编程方式使用dplyr 的case_when 来替换基本R cut()function。
目前,case_when 可以通过 NSE 与外部参数一起使用,例如:
library(dplyr)
library(rlang)
patterns <- list(
x <= 2 ~ "<=2",
x <= 4 ~ "2<->4",
x > 4 ~ ">4"
)
x <- 1:10
case_when(!!!patterns)
我想要做的是:在 mutate 中将它与另一个变量一起使用
这个想法是这样的,虽然我不知道如何让它发挥作用:
library(dplyr)
patterns_lazy <- list(
!!quo(x) <= 2 ~ "<=2",
!!quo(x) <= 4 ~ "2<->4",
!!quo(x) > 4 ~ ">4"
)
x <- "cyl"
mtcars %>% mutate(ABC = case_when(!!!patterns_lazy))
我希望能够定义我想要过滤的列(在字符串内),并检索类似这样的内容(此示例不起作用,因为它是所需的语法):
x <- "cyl"
mtcars %>%
select(cyl) %>%
mutate(ABC = case_when(!!!patterns_lazy)) %>%
head()
cyl ABC
1 6 >4
2 6 >4
3 4 2<->4
4 6 >4
5 8 >4
6 6 >4
感谢您的帮助:)
【问题讨论】: