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

sorting a complex vector by imaginary part in R

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

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

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

这也有效:

> 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

按照复数的虚部和return它们的索引对复数进行排序,然后使用索引引用排序后的相应复数值。