【问题标题】:Trouble using case_when in dplyr在 dplyr 中使用 case_when 时遇到问题
【发布时间】:2019-12-30 04:28:46
【问题描述】:

已经很晚了,我一定犯了一个愚蠢的错误,但是为什么case_when的这种用法会产生错误?

x <- 1:5
dplyr:::case_when(
    x == 1 ~ TRUE,
    x != 1 ~ print(x))
#> [1] 1 2 3 4 5
#> Error: must be a logical vector, not an integer vector

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    错误是因为case_when 期望所有RHS 评估为相同的类型。

    在这里,在 OP 的尝试中,TRUE 属于"logical" 类,x 属于"integer" 类型,因此,它返回错误。你可以试试,

    x <- 1:5
    dplyr::case_when(x == 1 ~ NA_integer_, x != 1 ~ x)
    #[1] NA  2  3  4  5
    

    或者其他方式:

    dplyr::case_when(x != 1 ~ x, TRUE ~ NA_integer_)
    

    【讨论】:

      猜你喜欢
      • 2020-02-24
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多