Yes, I now get average number of epochs = 340.17 and average error out = 0.1036295 after correcting the exit condition for the gradient descent:

Code:

*# Gradient descent*
repeat {
wbase = w;
nEpoch = nEpoch +1;
*# Permutate In-sample and update weight vector with each data point in turn*
permuted.ind = sample(nIn, nIn, replace=FALSE);
for (j in permuted.ind) {
v = (-YIn[j] * XIn[j,]) / (1 + exp(YIn[j] * (XIn[j,] %*% w)));
w = w - eta * v;
}
*# Stop gradient descent as soon as delta(w, wbase) < 0.01*
if (sqrt(sum((w - wbase)^2)) < 0.01) break()
}

There is nothing wrong with your code ... except for the eta value you're using: 0.1 instead of 0.01. Sorry ...