сортировка комплексного вектора по мнимой части в R - PullRequest
0 голосов
/ 26 сентября 2018
roots <- polyroot(c(5, 4, 3, 2, 1))

Я хочу отсортировать корни по возрастанию мнимой части.По умолчанию функция sort сортирует ее по возрастанию реальной части.Я прочитал документ и до сих пор не знаю, как настроить аргументы или написать команду.Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Это также работает:

> 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

Сортирует комплексные числа по их мнимым частям и возвращает их индексы, а затем использует индексы для ссылки на соответствующее комплексное значение в отсортированном порядке.

0 голосов
/ 26 сентября 2018

Используйте функцию 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
...