if
should take only one TRUE/FALSE, while you asking it to check n
.
x < z
[1] TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE FALSE TRUE FALSE
[20] FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE
[39] FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
I think you want
set.seed(357)
z <- runif(50, min = 0, max = 20)
ifelse(x < z, z, x)
[1] 10.00000 10.00000 10.00000 10.00000 13.06970 10.00000 18.67473 14.94917 15.56799 19.82682 12.49106 10.49149 10.00000
[14] 10.00000 11.79600 10.00000 10.00000 17.90611 13.66297 10.00000 10.00000 10.00000 10.00000 10.00000 14.15444 13.77288
[27] 10.00000 10.00000 10.32776 19.53836 10.00000 18.57790 10.00000 10.00000 11.40069 16.16679 13.86975 10.00000 16.86793
[40] 15.74069 10.00000 10.00000 12.99440 10.00000 10.00000 10.00000 10.44369 18.70916 10.00000 10.00000