--- a +++ b/soft.shrink.R @@ -0,0 +1,9 @@ +soft.shrink <- +function (delta, threshold) +{ + dif <- abs(delta) - threshold + delta <- sign(delta) * dif * (dif > 0) + nonzero <- sum(drop((dif > 0) %*% rep(1, ncol(delta))) > 0) + attr(delta, "nonzero") <- nonzero + delta +}