以下のデータフレーム ex があります。

ex
name score test rank
1 john 80 0 4
2 taro 60 0 3
3 betty 70 NA 2
4 hanako 50 0 1

testがNAのとき、rankもNAにしたいとき

mutate(ex,rank = if_else(test == 0,true = rank,false = NA))

と入力するとエラーが出る一方、

mutate(ex,rank = if_else(test == 0,true = rank,false = 0))

と入力すると望んだ結果が得られます。
どうしてこのようなことになるのか、教えていただければ幸いです。