如果我生成一个值向量,其中一些是负值:
d <- rnorm(1000, 4, 10)
z <- sapply(d, function(x) x^1.2)
z
将包含实际值和 NaN
的混合。向量中最初为负的任何值都将是 NaN
。
这是为什么呢?我该如何解决它?
您应该使用
complex
数字,如下所示
(d + 0i)^1.2
感谢对帖子的评论,我了解到这一点:
用户有时会对返回的值感到惊讶,例如为什么 (-8)^(1/3) 是 NaN。对于双输入,R 使用 IEC 60559 所有平台上的算术,以及C系统函数 ‘u2060powu2060’代表 ^ 运算符。相关标准定义结果 在许多极端情况下。特别是上面例子中的结果 由 C99 标准强制执行。在许多类 Unix 系统上 命令 man pow 给出大量值的详细信息 极端情况。
您可以通过
?"^"
文档了解更多信息。
代码可以通过以下方式解决:
as.complex(d)^1.2