Sparklyr 使用 case_when 和变量

Posted

技术标签:

【中文标题】Sparklyr 使用 case_when 和变量【英文标题】:Sparklyr using case_when with variables 【发布时间】:2018-03-22 11:46:03 【问题描述】:

case_when 与外部变量一起使用时,Sparklyr 失败。

工作示例:

test <- copy_to(sc, tibble(column = c(1,2,3,4)))
test %>%
  mutate(group = case_when(
                   column %in% c(1,2) ~ 'group 1',
                   column %in% c(3,4) ~ 'group 2'))

Error: Can't extract an environment from NULL 失败

test <- copy_to(sc, tibble(column = c(1,2,3,4)))
group1_cols <- c(1,2)
group2_cols <- c(3,4)
test %>%
  mutate(group = case_when(
                   column %in% group1_cols ~ 'group 1',
                   column %in% group2_cols ~ 'group 2'))

【问题讨论】:

【参考方案1】:

尝试取消引用变量:

test %>%
  mutate(group = case_when(
    column %in% !!group1_cols ~ 'group 1',
    column %in% !!group2_cols ~ 'group 2'))

有关更多信息,请查看dplyr 编程小插图http://dplyr.tidyverse.org/articles/programming.html

【讨论】:

以上是关于Sparklyr 使用 case_when 和变量的主要内容,如果未能解决你的问题,请参考以下文章

在循环中使用 Mutate 和 Case_when 时的问题

在 SQL Server 中结合 dbplyr 和 case_when

Mutate和case_when正在给NA

R语言case_when函数和cases函数实战

同时使用 SparkR 和 Sparklyr

dplyr case_when具有动态案例数时