Есть ли такая функция в R? Я гулял по всему миру, но "R Roll" в основном дает мне страницы об испанском произношении.
Ответ 1
Как насчет использования head и 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
Одна хорошая вещь об использовании head и tail... вы получаете обратный рулон с отрицательным n, например.
roll(1:5,-2)
[1] 3 4 5 1 2
Ответ 2
Здесь альтернатива, которая имеет преимущество в работе, даже когда x "прокатывается" более чем на один полный цикл (т.е. когда abs(n) > length(x)):