簡體   English   中英

在 dplyr 中使用 case_when 時遇到問題

[英]Trouble using case_when in dplyr

已經晚了,我一定犯了一個愚蠢的錯誤,但是為什么case_when這種用法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

錯誤是因為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_)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM