说我有
a <- c(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
并且我想通过将它在"左"方向上移动距离1来从a导出b
b
# [1] 2 3 1
Run Code Online (Sandbox Code Playgroud)
通过推导我的意思是你:
b <- c(2, 3, 1)例如,不是我正在寻找的解决方案什么是优雅/有效的方法呢?
A5C*_*2T1 16
您可以使用head和tail创建这样的函数:
shifter <- function(x, n = 1) {
if (n == 0) x else c(tail(x, -n), head(x, n))
}
Run Code Online (Sandbox Code Playgroud)
用法:
a <- 1:4
shifter(a)
# [1] 2 3 4 1
shifter(a, 2)
# [1] 3 4 1 2
Run Code Online (Sandbox Code Playgroud)
(或者,library(SOfun); shifter(a)你可以SOfun从这里得到的地方).