R函数,用于在Python Zip类结构中进行排序

时间:2018-08-15 23:17:35

标签: r

我有一个向量:

dput(pos)

c(2000L, 2020L, 2020L, 2040L, 2060L, 2080L, 2100L, 2120L, 2140L, 2160L, 2180L, 
2200L, 2220L, 2240L, 2260L, 2280L, 2300L, 2320L, 2340L, 2360L,  2380L,
2400L, 2420L, 2440L, 2460L, 2480L, 2500L, 2520L, 2540L,  2560L, 2580L,
2600L, 2620L, 2640L, 2660L, 2680L, 2700L, 2720L,  2740L, 2760L, 2780L,
2800L, 2820L, 2840L, 2860L, 2880L, 2900L,  2920L, 2940L, 2960L, 2980L)

我想对pos进行排序,以便获得以下向量:

2000, 2980, 2020, 2960, 2040, 2940等。

我写了一个函数:

for (i in seq_along(pos)){  
el1 <- min(range(pos))   
el2 <- max(range(pos))   
res <- rbind(el1, el2)  
pos <- pos[!pos == c(el1, el2)]}

不用说它没有给我想要的res向量。我知道我没有在循环中的任何地方调用i,如何解决此问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

pos = c(2000L, 2020L, 2040L, 2060L, 2080L, 2100L, 2120L, 2140L, 2160L, 2180L, 
  2200L, 2220L, 2240L, 2260L, 2280L, 2300L, 2320L, 2340L, 2360L,  2380L,
  2400L, 2420L, 2440L, 2460L, 2480L, 2500L, 2520L, 2540L,  2560L, 2580L,
  2600L, 2620L, 2640L, 2660L, 2680L, 2700L, 2720L,  2740L, 2760L, 2780L,
  2800L, 2820L, 2840L, 2860L, 2880L, 2900L,  2920L, 2940L, 2960L)

n = round(length(pos)/2)+1

pos2 = rep(0,(2*(n)-1))

pos2[2*(1:n)] = pos[2*(n:1)-1]
pos2[2*(1:n)-1] = pos[2*(1:n)]

答案 1 :(得分:0)

您可以反转向量并与原始图像组合,然后根据偶数/奇数序列选择一个或另一个:

  newdata <- data.frame(cbind(dat=data, rev=c(1, rev(data)[- length(data)]), n=seq(1:length(data)))) %>%
  mutate(res=ifelse(n%%2==1, dat, rev)) %>%
  select(res)