我在使用R和Matlab时观察到以下现象。
当我将日志应用于R中的负数时,我会收到以下错误消息:
警告消息:在日志(-1(中:NaNs产生
然而,当我在Matlab中将log应用于负数时,我会得到例如以下复数:
log(-1(:0.0000+3.1416i
日志(-5(:1.6094+3.1416i
有什么方法可以在R中实现相同的行为吗?或者有什么东西支持R中的默认选项吗?
log
在最初赋予它复杂性的同时,也赋予它复杂性。
log(-1+0i)
# [1] 0+3.141593i
log(-5+0i)
# [1] 1.609438+3.141593i
我不知道为什么默认情况下它没有提供这样做的选项,但话说回来,我并不总是处理复数。
如果您想以编程方式进行此操作,可以使用as.complex
:
log(as.complex(-1))
# [1] 0+3.141593i
或者甚至让一个助手函数为你简化它:
mylog <- function(x, ...) log(as.complex(x), ...)
mylog(-1)
# [1] 0+3.141593i