已经晚了,我肯定犯了一个愚蠢的错误,但是为什么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
答案 0 :(得分:3)
该错误是因为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_)