【问题标题】:How to combine 2 columns of the same matrix and arrange the values in alternating rows?如何组合同一矩阵的 2 列并将值排列在交替行中?
【发布时间】:2014-11-08 04:58:03
【问题描述】:


可能,这将是一件容易的事,只是今天我无法理解它。
如何组合同一矩阵的 2 列,以使原始矩阵的第 1 列中的元素 1 后面跟着第 2 列中的元素 1,依此类推?例如。原始矩阵可能如下所示:

set.seed(200)
m <- matrix(sample(1:100, 10, replace=FALSE), ncol=2, byrow=TRUE, dimnames=NULL)
m

     [,1] [,2]
[1,]   54   58
[2,]   99   68
[3,]   65   80
[4,]   67    9
[5,]   49   22

我想要达到的效果应该是这样的:

      [,1]
 [1,]   54
 [2,]   58
 [3,]   99
 [4,]   68
 [5,]   65
 [6,]   80
 [7,]   67
 [8,]    9
 [9,]   49
[10,]   22

然后如何转换原始矩阵以实现第二个矩阵中显示的排列?当然这只是一个例子,不是真实数据。感谢您的帮助。

【问题讨论】:

    标签: r matrix transform


    【解决方案1】:

    您可以在矩阵的转置 (t) 上使用 cas.vector,如下所示:

    c(t(m))
    #  [1] 54 58 99 68 65 80 67  9 49 22
    

    如果你想要一个像你展示的那样的单列矩阵(或者,如 cmets 中所述,你可以在这个阶段跳过 cas.vector,因为你没有提供任何您正在创建的矩阵的维度)。

    matrix(c(t(m)))
    #       [,1]
    #  [1,]   54
    #  [2,]   58
    #  [3,]   99
    #  [4,]   68
    #  [5,]   65
    #  [6,]   80
    #  [7,]   67
    #  [8,]    9
    #  [9,]   49
    # [10,]   22
    

    【讨论】:

    • 酷。工作得很好。谢谢。
    • Arghhh,你又打败了我。 +1
    • 如果你用它制作矩阵,你甚至不需要c 函数:matrix(t(m))
    • @Simon 如果有效,您应该将其标记为已回答。
    • @Mike.Gahan 谢谢,但请不要以为我在此处仅发布 2 个问题后就知道所有规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2015-10-12
    • 2017-03-06
    相关资源
    最近更新 更多