以下の関数は、ベクトルに対しては期待した動作をしない。
mysqrt <- function(x) { if (x > 0) sqrt(x) else 0 }
そこで、ifelse を使って
mysqrt2 <- function(x) { ifelse(x > 0, sqrt(x), 0) }
のようにすれば動く。ただ、sqrt(x) が x のすべての要素に対して評価されてしまうようで、警告が表示されてしまう。どうすればいいんだろう?
以下の関数は、ベクトルに対しては期待した動作をしない。
mysqrt <- function(x) { if (x > 0) sqrt(x) else 0 }
そこで、ifelse を使って
mysqrt2 <- function(x) { ifelse(x > 0, sqrt(x), 0) }
のようにすれば動く。ただ、sqrt(x) が x のすべての要素に対して評価されてしまうようで、警告が表示されてしまう。どうすればいいんだろう?