ベクトル化されたif

以下の関数は、ベクトルに対しては期待した動作をしない。

mysqrt <- function(x) {
  if (x > 0)
    sqrt(x)
  else
    0
}

そこで、ifelse を使って

mysqrt2 <- function(x) {
  ifelse(x > 0, sqrt(x), 0)
}

のようにすれば動く。ただ、sqrt(x) が x のすべての要素に対して評価されてしまうようで、警告が表示されてしまう。どうすればいいんだろう?