我有

d <- matrix(rnorm(6), ncol = 1,
            dimnames = list(c("a", "a1", "d", "e", "f", "f2"), NULL))

我想按以下顺序对行进行排序: a1, a, e, d, f2, f

笔记:
  • 我正在寻找通用解决方案。当然,我知道如何为这个特定矩阵做这件事。
  • Rownames 可以是各种名称,因此任何与字符串相关的操作都不起作用
  • 矩阵 d 不会超过 16-20 个条目。所以不用担心速度。
  • 矩阵的行数始终为偶数。
  • 最佳答案

    切换每对行给我们行号 2, 1, 4, 3, 6, 5 等。因此,转换后第 n 行是第 (n - (-1)^n) 行原始矩阵。

    因此,您想要的行顺序是 1:nrow(d) - (-1)^(1:nrow(d)) :

    d[1:nrow(d) - (-1)^(1:nrow(d)), , drop = FALSE]
    #          [,1]
    # a1  0.1228430
    # a  -1.4051684
    # e  -0.7928203
    # d   1.3270429
    # f2  0.3554126
    # f  -1.1388026
    

    关于r - 使用每秒 i (i= 1, 3, 5, ....) 为列中的每一行 i 和 i+1 切换顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53561849/

    10-11 03:53