runif
возвращает вектор.
if
принимает одно значение (не вектор).
Проверьте руководство для runif
, я не думаю, что вы используете его правильно.
В R часто имеет смысл удалить циклы и использовать вместо них векторы - например:
bnc1<-function(maxITR=100000, d=2, l=1){
x=runif(maxITR,0,pi);
y=runif(maxITR,0,d/2);
counts = sum((l/2*sin(x)) >= y);
counts/maxITR*d/l
}