说我有
a <- c(1, 2, 3)
我希望b从a方向转移到#34; left&#34;距离1
b
# [1] 2 3 1
通过推导我的意思是你:
b <- c(2, 3, 1)
不是我正在寻找的解决方案这样做的优雅/有效方法是什么?
答案 0 :(得分:16)
您可以使用head
和tail
来创建这样的函数:
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
。