将矢量重新排序为第一个,最后一个,第二个,第二个,等等

时间:2015-08-11 14:17:32

标签: r

实际上是否有一个简单的解决方案来重新排序像矢量这样的矢量 第一个元素,最后一个元素,第二个元素,第二个元素等

所以我希望c(1,2,3,4,5)获得c(1,5,2,4,3)

原因是我有一个颜色调色板有16种颜色,颜色1非常类似于两种但不是颜色16.但在我的图中,颜色1着色的点接近颜色为2的颜色。

对于我的调色板,我使用了颜色冲泡器中的Set 1,并使用colorRampPalette来计算颜色之间的颜色,因此它们有点类似。

一个解决方案就是sample(my_colors),但实际上我想像上面所说的那样对它们进行重新排序。

2 个答案:

答案 0 :(得分:5)

这将满足您的需求:

a <- c(1,2,3,4,5)
b <- rbind(a,a[5:1])
c <-b [1:5]

希望这有帮助

这是fiddle

您可以使用

进行概括
rbind(a,rev(a))[1:length(a)] 

答案 1 :(得分:4)

这是一种简单的方法:

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:来自@bgoldst:更好的(一线)方法,不涉及矢量名称:

a[order(-abs(a-median(a)))]

2 :(也来自bgoldst)处理非数字(字母顺序)值:

letters[order(-abs(seq_along(letters)-(length(letters)+1)/2))]