yBin$BMI <- ifelse(25 <= y$BMI, 1, 0)
は,単に
yBin$BMI <- 25 <= y$BMI
でよい。TRUE/FALSE は用途により 1/0 に変更して使われるので気にしなくて良いが,あえて TRUE/FALSE ではなく 1/0 にしたいなら
yBin$BMI <- (25 <= y$BMI)+0
後者は100倍くらい速い。まあ,100000 回もやって 0.1 秒が 0.001 秒になるという,どうでもよいレベルの話ではあるが,プログラムが格好良いかどうかには影響を及ぼすだろう。
> x <- rnorm(100000)
> system.time(y1 <- ifelse(x < 0, 1, 0))
ユーザ システム 経過
0.101 0.007 0.106
> system.time(y2 <- x < 0)
ユーザ システム 経過
0.001 0.000 0.000
> system.time(y3 <- (x < 0)+0)
ユーザ システム 経過
0.001 0.000 0.002
> all(y1 == y2)
[1] TRUE
> all(y1 == y3)
[1] TRUE
は,単に
yBin$BMI <- 25 <= y$BMI
でよい。TRUE/FALSE は用途により 1/0 に変更して使われるので気にしなくて良いが,あえて TRUE/FALSE ではなく 1/0 にしたいなら
yBin$BMI <- (25 <= y$BMI)+0
後者は100倍くらい速い。まあ,100000 回もやって 0.1 秒が 0.001 秒になるという,どうでもよいレベルの話ではあるが,プログラムが格好良いかどうかには影響を及ぼすだろう。
> x <- rnorm(100000)
> system.time(y1 <- ifelse(x < 0, 1, 0))
ユーザ システム 経過
0.101 0.007 0.106
> system.time(y2 <- x < 0)
ユーザ システム 経過
0.001 0.000 0.000
> system.time(y3 <- (x < 0)+0)
ユーザ システム 経過
0.001 0.000 0.002
> all(y1 == y2)
[1] TRUE
> all(y1 == y3)
[1] TRUE
※コメント投稿者のブログIDはブログ作成者のみに通知されます