先輩方、2つ質問があります

1つはベクトルを一期ずつずらして行列にするというもので、
1〜100が入ったベクトルから、

1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
...

という行列を作りたいんですが、
こういうのは、

a=1:100
b=a
a.len=length(a)
for(i in 2:5){
b=cbind(b,a[i:a.len])
}
b

という感じでforとbind使うしか方法ないでしょうか?
これだとaが10000とかあるとまあまあの処理時間を要してしまいます