R中带负数向量的分数指数提升

R中带负数向量的分数指数提升,r,math,R,Math,我有一个包含负数的数字向量,我想把它提升为分数指数,但我不知道怎么做。下面是一些示例代码 a = seq(5,-5,1) b = a^(5/2) b在a为负值时返回NAN值。但是, d = -5^(5/2) 工作。我知道这是因为R中的优先级,但我想怎么做,就是乘以a的绝对值,然后赋值为负数(同时评估a==0)的可能性 我知道这更多的是数学和R问题,而不是统计学问题,所以如果需要移动它,我会这样做。b=rep(NA,length(a))#创建一个长度等于a长度的向量 b = rep(NA,l

我有一个包含负数的数字向量,我想把它提升为分数指数,但我不知道怎么做。下面是一些示例代码

a = seq(5,-5,1)
b = a^(5/2)
b
a
为负值时返回
NAN
值。但是,

d = -5^(5/2) 
工作。我知道这是因为R中的优先级,但我想怎么做,就是乘以
a
的绝对值,然后赋值为负数(同时评估
a==0
)的可能性

我知道这更多的是数学和R问题,而不是统计学问题,所以如果需要移动它,我会这样做。

b=rep(NA,length(a))#创建一个长度等于a长度的向量
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
b[a>=0]=(a[a>=0])^(5/2)#处理a的非负元素 b[a<0]=-(-a[a<0])^(5/2)#处理a的负元素

也许不是最有效的方法,但这个想法应该是有用的。

exponent你矛盾的结果源于这样一个事实:作为一种乘法,幂的结合力比否定的结合力更强。即

exponent <- function(a, pow) (abs(a)^pow)*sign(a)
-5^(5/2) = - ( 5^(5/2) ).

这种分数次幂不应该正确地定义为否定论点。这将是解决问题的办法

x^2 = (-5)^5 = - 5^5
这是不可能用实数来解的


复数的分数幂是一个你真的不想打开的蠕虫罐头。

就像OP一样,我认为这可能属于SO,但你不需要自己移动它:如果人们同意我的观点,它将为你迁移。很好。比我的更优雅,太好了。从不知道sign()。如果您没有访问sign的权限,通常可以使用signum函数的数学定义:x/abs(x)for x!=否则为0和0。