【问题标题】:Order lower matrix in R在R中订购下矩阵
【发布时间】:2017-10-12 04:15:15
【问题描述】:

很高兴得到您的帮助。

我有一个下三角矩阵,但我想根据我的 OWN 名称列表(可能是向量?)来编辑行的顺序。

输入

   A   C   D   B
A  0   NA  NA  NA
C  13  0   NA  NA
D  14  17  0   NA
B  12  15  16  0

输出

  A   B   C   D
A 0   NA  NA  NA
B 12  0   NA  NA
C 13  15  0   NA
D 14  16  17   0

我想回忆一下行的顺序应该是我提供的列表,而不是任何升序或降序。

感谢您的宝贵时间!

【问题讨论】:

    标签: r dataframe matrix tidyr


    【解决方案1】:

    我们可以使用lower.tri 得到一个逻辑矩阵,其中下半部分元素为 TRUE,其他元素为 FALSE,子集数据集 ('v1')。将此用于order (v1[order(v1)]) 并将其分配回数据的下三角形

    v1 <- df1[lower.tri(df1)]
    df1[lower.tri(df1)] <- v1[order(v1)]
    

    【讨论】:

    • 嗨@ankur,感谢您的回复。你能解释一下吗?特别是在哪一部分我可以在你的脚本中介绍名称列表(我想显示矩阵的顺序)?
    • @gusa10 我添加了更多解释
    • 但这不是按升序或降序排列的吗?正如我在帖子中提到的,我希望在订单上保持灵活。我的矩阵有很多行,我想根据我的预定义列表进行排序
    • @gusa10 如果您希望它是反向的,请在order 中使用decreasing = TRUE。默认为decreasing = TRUE。关于预定义列表,您可以使用它来代替order(v1)。由于我不知道您的预定义列表并且您没有在帖子中显示它,您可以修改它
    • 我不能定义自己的订单吗?我不想使用减少也不增加。
    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2014-10-09
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多