【问题标题】:sorting a complex vector by imaginary part in R在R中按虚部对复数向量进行排序
【发布时间】:2019-03-02 06:05:54
【问题描述】:
roots <- polyroot(c(5, 4, 3, 2, 1))

我想按虚部的升序对根进行排序。默认情况下,sort 函数按实部的升序对其进行排序。我已经阅读了文档,但我仍然不知道如何调整参数或编写命令。有人可以帮忙吗?

【问题讨论】:

    标签: r sorting vector complex-numbers


    【解决方案1】:

    使用Im函数提取虚部并排序。

    roots <- polyroot(c(5, 4, 3, 2, 1))
    #[1]  0.287815+1.416093i -1.287815+0.857897i -1.287815-0.857897i
    #[4]  0.287815-1.416093i
    
    roots[order(Im(roots))]
    #[1]  0.287815-1.416093i -1.287815-0.857897i -1.287815+0.857897i
    #[4]  0.287815+1.416093i
    

    【讨论】:

      【解决方案2】:

      这也有效:

      > roots<-polyroot(c(5,4,3,2,1))
      > roots[sort(Im(roots),index.return=T)$ix]
      [1]  0.287815-1.416093i -1.287815-0.857897i
      [3] -1.287815+0.857897i  0.287815+1.416093i
      

      将复数按虚部排序并返回其索引,然后使用索引以排序顺序引用对应的复数值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 2018-10-08
        • 2020-08-19
        • 2012-02-19
        • 2014-06-02
        相关资源
        最近更新 更多