Hi Ron,
What you get is correct, it seems to me. R treats your vector as a numeric, so a continuous interval ranging from 3 to 8. The binning therefore is continuous. R returns is the interval splits, not where the elements of your vector go. Are you probably looking for following explanation (I used cut-function, not your package)?
class(quality)
# [1] "numeric"
cut(quality, breaks = c(3,4,6,8), include.lowest = TRUE)
# [1] [3,4] [3,4] (4,6] (4,6] (6,8] (6,8]
# Levels: [3,4] (4,6] (6,8]
table(cut(quality, breaks = c(3,4,6,8), include.lowest = TRUE) )
#
# [3,4] (4,6] (6,8]
# 2 2 2
#use split to see the element-split
f <- as.factor(cut(quality, breaks = c(3,4,6,8), include.lowest = TRUE) )
split(quality, f)
# $`[3,4]`
# [1] 3 4
#
# $`(4,6]`
# [1] 5 6
#
# $`(6,8]`
# [1] 7 8
#
Otherwise, as @jrkrideau suggests, you need to provide more information for what you trying to achieve.
Hope this helps, JW