sudo make install sudo make install - 1 year ago 87
Python Question

Equivalent to numpy.roll() in R?

I have an array:

a <- c(1,2,3,4,5)


And I'd like to do somthing like:

b <- roll(a,2) # 4,5,1,2,3


Is there a function like that in R? I've been googling around, but "R Roll" mostly gives me pages about Spanish pronunciation.

Answer Source

How about using head and tail...

roll <- function( x , n ){
  if( n == 0 )
    return( x )
  c( tail(x,n) , head(x,-n) )
}

roll(1:5,2)
#[1] 4 5 1 2 3

#  For the situation where you supply 0 [ this would be kinda silly! :) ]
roll(1:5,0)
#[1] 1 2 3 4 5

One cool thing about using head and tail... you get a reverse roll with negative n, e.g.

roll(1:5,-2)
[1] 3 4 5 1 2
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download