R中的圆形移位阵列距离n

时间:2015-05-30 04:06:50

标签: r

说我有

a <- c(1, 2, 3)

我希望b从a方向转移到#34; left&#34;距离1

b
# [1] 2 3 1

通过推导我的意思是你:

  1. 通过&#34; a&#34;进入一个吐出&#34; b&#34;
  2. 的功能
  3. 你使用某种索引短片就可以了。
  4. 例如,
  5. b <- c(2, 3, 1)不是我正在寻找的解决方案
  6. 这样做的优雅/有效方法是什么?

1 个答案:

答案 0 :(得分:16)

您可以使用headtail来创建这样的函数:

shifter <- function(x, n = 1) {
  if (n == 0) x else c(tail(x, -n), head(x, n))
}

用法:

a <- 1:4

shifter(a)
# [1] 2 3 4 1

shifter(a, 2)
# [1] 3 4 1 2

(或library(SOfun); shifter(a),您可以从here获取SOfun