我有一个向量,有时可能包含0和1.
我想将此向量放入函数qnorm
qnorm(vec , 0, 1)
但是,vec
中的0和1可能会导致qnorm
生成-inf
或inf
。现在,我想首先处理向量vec
,然后将向量放在qnorm
函数中。但是,我想避免使用for循环和哪个函数。有更优雅的解决方案吗?
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 }
}
答案 0 :(得分: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