# [R] Breakdown a number

Paul Roebuck roebuck at mdanderson.org
Wed Apr 19 20:47:22 CEST 2006

```On Wed, 19 Apr 2006, Gabor Grothendieck wrote:

> On 4/19/06, Paul Roebuck <roebuck at mdanderson.org> wrote:
>
> > Isn't there a builtin method for doing this and, if so,
> > what is it called?
> >
> >        breakdown <- function(whole) {
> >            breaks <- c(250, 800)
> >            pieces <- integer(length(breaks) + 1)
> >            if (whole > breaks[2]) {
> >                pieces[3] <- whole - breaks[2]
> >                whole <- breaks[2]
> >            }
> >            if (whole > breaks[1]) {
> >                pieces[2] <- whole - breaks[1]
> >                whole <- breaks[1]
> >            }
> >            pieces[1] <- whole
> >
> >            return(pieces)
> >        }
> >
> > breakdown(1200) # 250 550 400
>
> Maybe you could discuss in words what you want but perhaps
> you are looking for diff:

That was rather my problem searching for my answer as I
was unsure what this was called. I was searching for
'bins' or 'breaks' (like in hist method but not for
plotting) and leading nowhere fast. Alas, I thought
sample code would go further than my description.

> > bp <- c(0, 250, 800, 1200)
> > diff(bp)
> [1] 250 550 400

Don't think diff method is going to work either, at
least in cases where the 'whole' is less than greatest
'break'.

> breakdown2 <- function(x, breaks = c(250, 800)) {
diff(c(0, breaks, x))
}
> breakdown(10)		# 10 0 0
> breakdown2(10)	# 250 550 -790
>
> breakdown(400)	# 250 150 0
> breakdown2(400)	# 250 550 -400

----------------------------------------------------------
SIGSIG -- signature too long (core dumped)

```