if_else()
の機能では、dplyr
の場合はit requires that both the if:TRUE and if:FALSE elements are of the same classになります。RでのNAのクラスを指定します(if_else、dplyrの場合)
NA
をif_else()
から返信します。
if_else(mtcars$cyl > 5, NA, 1)
戻り
Error:
false
has type 'double' not 'logical'
単にNA
に読み取ること論理的であり、そして1(ダブル)の数値であるため。
NA
の周りにas.numeric()
ラップを配置してください。
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
」と入力すると、このように入力する方が良いでしょうか?
NBこれは、より厳しいdplyr::if_else
ではなく、base::ifelse
にのみ適用されます。
基本機能を試してみてください。 NAはデフォルトでは論理的です。 Hadleyの関数は、実行する前に同じデータ型をチェックする必要がありますが、基底R関数はNAを他の引数に適合させるだけです。 NAで何が起こっているのかをよりよく理解するには、ヘルプページ '?" NA ""を参照してください。また、 'ifelse(mtcars $ cyl> 5、" this "、1)'の出力を調べてください。 – lmo