【问题标题】:sorting by imaginary part in R [duplicate]按R中的虚部排序[重复]
【发布时间】:2018-10-06 12:58:44
【问题描述】:

我想按虚部的升序对几个复数进行排序。我已阅读文档,但我仍然不知道如何使用sort 函数在单行命令中执行此操作。 (我试过r[order(Im(r))],这是在类似问题中提供的答案,但我想知道如何使用sort 来做到这一点。)有人可以帮忙吗?谢谢。

【问题讨论】:

  • 你能给我们一个你想要排序的虚数向量的例子吗?到目前为止,您尝试过什么?

标签: r sorting complex-numbers


【解决方案1】:

复数的不同顺序是可以想象的:例如根据它们的实部、虚部、大小或极角。

要根据虚部进行排序,定义自定义函数很简单。这是一个例子:

complex_sort  <- function(z) z[order(Im(z))]

z1 <- complex(real = 1, imaginary = 1)
z2 <- complex(real = 2, imaginary = 1)
z3 <- complex(real = 1, imaginary = 2)
complex_sort(c(z1, z2, z3))
#[1] 1+1i 2+1i 1+2i

【讨论】:

  • @Ashley,您可能还会发现查看 help("complex") 会有所帮助,其中列出了可用于在 R 中提取复数不同部分的函数
  • 感谢您的回答。实际上我已经尝试过这个:r&lt;-polyroot(c(0,1,2,3,4,5)) r[order(Im(r))],但我想知道如何通过在单个命令中使用 sort 来做同样的事情?
  • @Aria 你不能像我在帖子中解释的那样使用sort,因此我定义了函数complex_sort。所以直接排序可以complex_sort(polyroot(c(0,1,2,3,4,5)))
  • 嗨!我现在知道该怎么做:roots&lt;-polyroot(c(0,1,2,3,4,5)) roots[sort(Im(roots),index.return=T)$ix] [1] 0.1378323-0.6781544i -0.5378323-0.3582847i [3] 0.0000000+0.0000000i -0.5378323+0.3582847i [5] 0.1378323+0.6781544i
猜你喜欢
  • 2019-03-02
  • 1970-01-01
  • 2018-11-27
  • 2018-02-01
  • 2023-01-19
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
相关资源
最近更新 更多