为什么对负值向量求幂会在 R 中得到 NaN

问题描述 投票:0回答:2

如果我生成一个值向量,其中一些是负值:

d <- rnorm(1000, 4, 10)
z <- sapply(d, function(x) x^1.2)

z
将包含实数值和 NaN 的混合。向量中最初为负的任何值都将为 NaN。

这是为什么呢?我该如何解决它?

r vector nan exponential
2个回答
0
投票

感谢对帖子的评论,我了解到这一点:

用户有时会对返回的值感到惊讶,例如为什么 (-8)^(1/3) 是 NaN。对于双输入,R 使用 IEC 60559 所有平台上的算术,以及C系统函数 ‘u2060powu2060’代表 ^ 运算符。相关标准定义结果 在许多极端情况下。特别是上面例子中的结果 由 C99 标准强制执行。在许多类 Unix 系统上 命令 man pow 给出大量值的详细信息 极端情况。

您可以通过

?"^"
文档了解更多信息。

代码可以通过以下方式解决:

sign(x)*abs(x)^1.2

0
投票

您应该使用

complex
数字,如下所示

(d + 1i*0)^1.2
© www.soinside.com 2019 - 2024. All rights reserved.