如何解决我可以将数字提高到R中向量的幂吗?
我有一个向量,并且想在不使用循环的情况下将数字提高到向量元素的幂。有简单的方法吗?
我尝试了a ^ b,其中a是一个数字,b是一个向量,但这似乎对我不起作用。
解决方法
在R中必须对求幂运算进行仔细的操作,因为负基数会导致错误的结果。
错误
power <- function(x,y) x^y
power(2,3)
#[1] 8
power(2,-3)
#[1] 0.125
power(1,1/3)
#[1] 1
power(-1,1/3)
#[1] NaN
右
power <- function(x,y) sign(x) * abs(x)^y
power(2,-3)
#[1] 0.125
power(1,1/3)
#[1] -1
现在看看第二个power
函数是否是矢量化的,就像问题所要求的那样。
power(2,c(1:4,pi,-pi,-1/3,1/3))
#[1] 2.0000000 4.0000000 8.0000000 16.0000000 8.8249778 0.1133147
#[7] 0.7937005 1.2599210
outer(c(-2,2),1/3),power)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,] -2 -4 -8 -16 -8.824978 -0.1133147 -0.7937005 -1.259921
#[2,] 2 4 8 16 8.824978 0.1133147 0.7937005 1.259921
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。