In older versions of Rif(...) with ... longer than 1 was tolerated, but only the first value was taken into account. So your code was probably not doing what you wanted. For example, using R4.1.3 (on Posit Cloud):
temp <- data.frame(a = c(1,3),
b = c(2,2))
temp |>
dplyr::mutate(c = if(a>b){100}else{200})
#> Warning: There was 1 warning in `dplyr::mutate()`.
#> ℹ In argument: `c = if (...) NULL`.
#> Caused by warning in `if (a > b) ...`:
#> ! the condition has length > 1 and only the first element will be used
#> a b c
#> 1 1 2 200
#> 2 3 2 200
As you can see, since R 1.7.0 it gave a warning, since R 4.2.0, it gives an error, since it's probably not what you want to do.
What you need is then, either make explicit that you're only considering the first value:
temp |>
mutate(c = if(a[[1]]>b[[1]]){100}else{200})
#> a b c
#> 1 1 2 200
#> 2 3 2 200
Or, as suggested by startz, use if_else() for a vectorized version of if/else:
temp |>
mutate(c = if_else(a > b, 100, 200))
#> a b c
#> 1 1 2 200
#> 2 3 2 100