0

0 と 1 を含む場合があるベクトルがあります。

このベクトルを関数qnormに入れる必要があります

qnorm(vec , 0, 1)

ただし、 の 0 と 1により、またはが生成されるvec場合があります。次の for ループは、最初にベクトルを処理し、次にベクトルを関数に入れるために実行したいことです。ただし、for ループと which 関数の使用は避けたいと思います。これに対するよりエレガントな解決策はありますか?qnorm-infinfvecqnorm

for(i in 1:length(vec)) {
    if(vec[i] == 0) {vec[i] <- vec[i] + 1e-50}
    else if(vec[i] == 1) {vec[i] <- vec[i] - 1e-50  }
}
4

1 に答える 1

1

使用できますifelse

vec <- ifelse(vec == 0, vec + 1e-50, vec - 1e-50)

ベクトルに 0 と 1 以外の値が含まれている場合は、次を使用できます。

vec[vec == 0] <- vec[vec == 0] + 1e-50
vec[vec == 1] <- vec[vec == 1] - 1e-50
于 2013-08-29T07:49:46.530 に答える