在if_else()
函數dplyr
,it requires that both the if:TRUE and if:FALSE elements are of the same class中。在R中指定NA的等級(對於if_else,dplyr)
我希望從我的if_else()
聲明中返回NA
。
但是,例如,
if_else(mtcars$cyl > 5, NA, 1)
返回
Error:
false
has type 'double' not 'logical'
由於只需在NA
讀取是合乎邏輯的,而1是數字(雙)。
包裝as.numeric()
圍繞NA
工作正常:
if_else(mtcars$cyl > 5, as.numeric(NA), 1)
回報
1 NA NA 1 NA NA NA NA 1 1 NA NA NA NA NA NA NA NA 1 1 1 1 NA NA NA NA 1 1 1 NA NA NA 1
正如我所希望的。
但這感覺有點傻/不必要。有沒有更好的方式輸入NA
作爲「數字NA
」比包裝它像這樣?
NB這隻適用於更嚴格的dplyr::if_else
而不是base::ifelse
。
在原子向量的所有元素都必須是相同的類型。 NA默認是邏輯的。在運行之前,Hadley的函數必須檢查相同的數據類型,但是基本的R函數只是強制NA來適應另一個參數。請參閱「?」NA「幫助頁面以更好地瞭解NA的情況。另外,請查看'ifelse(mtcars $ cyl> 5,「this,1)'的輸出。 – lmo