我有一个包含负数的数字向量,我想把它提升到一个小数指数,但不能弄明白怎么做。这是一些示例代码。
a = seq(5,-5,1)
b = a^(5/2)
当b
为否定时, NAN
会返回a
个值。但是,
d = -5^(5/2)
的工作原理。我知道这是因为R中的优先级,但是如何做我想要的,即乘以a
的绝对值,然后分配负数(同时还评估{{1}的可能性}})?
我知道这更多是数学和R问题而不是统计数据,所以如果需要移动,我会这样做。
答案 0 :(得分:7)
exponent <- function(a, pow) (abs(a)^pow)*sign(a)
答案 1 :(得分:2)
b = rep(NA,length(a)) # create a vector of length equal to length of a
b[a>=0] = ( a[a>=0])^(5/2) # deal with the non-negative elements of a
b[a< 0] = -(-a[a< 0])^(5/2) # deal with the negative elements of a
也许不是最有效的方法,但这个想法应该是可用的。
答案 2 :(得分:0)
你的矛盾结果源于这样一个事实:作为一种乘法的力量比否定更强大。即,
-5^(5/2) = - ( 5^(5/2) ).
这种分数权力应该正确地不被定义为否定论据。这将是
的解决方案x^2 = (-5)^5 = - 5^5
这是不可能实际解决的。
复数的分数幂是一种你真的不应该打开的蠕虫。