失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > R语言——符号函数(向量化)

R语言——符号函数(向量化)

时间:2020-09-13 13:52:43

相关推荐

R语言——符号函数(向量化)

目录

引言函数if函数逻辑函数总结

引言

本文编写的函数是符号函数sgn,符号函数的定义如下:

f(x)={1,x>00,x=0−1,x<0f(x)=\left\{ \begin{aligned} 1 ,x >0 \\ 0, x = 0 \\ -1, x <0\\ \end{aligned} \right. f(x)=⎩⎪⎨⎪⎧​1,x>00,x=0−1,x<0​

R语言内部没有这个内置函数。我们可以通过function、if函数很简单的定义自己的符号函数,因为if函数不能向量化判断,所以很难写成向量化的函数。在写自己的算法的时候如果表达式中用到符号函数就会在模拟的时候变得很慢。本文就从逻辑函数的角度来定义符号函数。

函数

if函数

非向量化的

> sgn_x <- function(x){+ if(x > 0) return(1)+ else if(x < 0) return(-1)+ else return(0)+ }> x = -5:5> x[1] -5 -4 -3 -2 -1 0 1 2 3 4 5> sgn_x(x)[1] -1Warning messages:1: In if (x > 0) return(1) else if (x < 0) return(-1) else return(0) :条件的长度大于一,因此只能用其第一元素2: In if (x < 0) return(-1) else return(0) :条件的长度大于一,因此只能用其第一元素> sgn_x(10.5)[1] 1> sgn_x(0)[1] 0> sgn_x(-0.5)[1] -1

向量化的

> sgn_v <- function(x){+ for(i in 1:length(x)) x[i] <- sgn_x(x[i])+ return(x)+ }> x = -5:5> x[1] -5 -4 -3 -2 -1 0 1 2 3 4 5> sgn_v(x)[1] -1 -1 -1 -1 -1 0 1 1 1 1 1

逻辑函数

> sgn <- function(x){+ 2*(x > 0) + (x == 0) - 1+ }> x = -5:5> x[1] -5 -4 -3 -2 -1 0 1 2 3 4 5> sgn(x)[1] -1 -1 -1 -1 -1 0 1 1 1 1 1

总结

可以看出sgn_v这是一个伪向量化的函数,实际还是循环

如果觉得《R语言——符号函数(向量化)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。