代码之家  ›  专栏  ›  技术社区  ›  Manasi Shah

Python类Zip结构排序的R函数

r
  •  0
  • Manasi Shah  · 技术社区  · 6 年前

    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 回复  |  直到 6 年前
        1
  •  0
  •   Nar    6 年前

    可以反转矢量并与原始选择相结合,根据偶数/奇数顺序选择一个或另一个:

      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)
    
        2
  •  0
  •   Thiago Fernandes    6 年前
    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)]