如何滚动向量,使最大值位于中间,并且相对于它的值的顺序保持不变?
如果矢量的长度是偶数,那么就把它放在平均值中:n/2
如果我有:vec <- c(0, 2, 4, 3, 1, 8)
我想返回:3 1 8 0 2 4
谢谢。
您可以使用具有shifter
:函数的SOfun
包
library(SOfun)
shifter(vec, which.max(vec) - length(vec) / 2)
输出
[1] 3 1 8 0 2 4
在第二种情况下,您有:
vec <- c(0, 8, 4, 3, 1, 2)
中间之前有max
值,导致负偏移:
shifter(vec, which.max(vec) - length(vec) / 2)
输出
[1] 2 0 8 4 3 1