Using cut/split seems like gross overkill here. Among other things, you don't need to generate labels for all the different ranges. which(x<=range)[1] seems straightforward enough to me, but you could also use the built-in function findInterval. -s