是否有一个简单的解决方案来重新排序向量,如
第一个元素,最后一个元素,第二个元素,倒数第二个元素,等等
所以我期望c(1,2,3,4,5)
得到c(1,5,2,4,3)
原因是我有一个有16种颜色的调色板,颜色1与颜色2非常相似,但与颜色16不同。但是在我的图中,用颜色1标记的点与用颜色2标记的点很接近。
对于我的调色板,我使用color brewer的Set 1,并使用colorRampPalette
来计算两者之间的颜色,因此它们有点相似。
一种解决方案是只使用sample(my_colors)
,但实际上我想像上面所说的那样重新排序它们。
这将满足您的需求:
a <- c(1,2,3,4,5)
b <- rbind(a,a[5:1])
c <-b [1:5]
希望有帮助
Here is a fiddle
可以用
进行概括rbind(a,rev(a))[1:length(a)]
有一个简单的方法:
a<-seq(1,100)
b<-a-median(a)
names(a)=b
a<-order(-abs(b))
print(a)
[1] 1 100 2 99 3 98 4 97 5 96 6 95 7 94 8 93 9 92 10 91 11 90 12 89 13 88 14 87
[29] 15 86 16 85 17 84 18 83 19 82 20 81 21 80 22 79 23 78 24 77 25 76 26 75 27 74 28 73
[57] 29 72 30 71 31 70 32 69 33 68 34 67 35 66 36 65 37 64 38 63 39 62 40 61 41 60 42 59
[85] 43 58 44 57 45 56 46 55 47 54 48 53 49 52 50 51
从注释中:
1: From @bgoldst:一个更好的(一行)方法,不涉及向量名:
a[order(-abs(a-median(a)))]
2:(同样来自bgoldst)用于处理非数字(字母顺序)值:
letters[order(-abs(seq_along(letters)-(length(letters)+1)/2))]