通过R中的虚部对复数向量进行排序

时间:2018-09-26 12:46:49

标签: r sorting vector complex-numbers

roots <- polyroot(c(5, 4, 3, 2, 1))

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

2 个答案:

答案 0 :(得分:4)

使用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

答案 1 :(得分:0)

这也有效:

> 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

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