数学之路(2)-数据分析-R基础(25)

19)定义函数与操作符

有限维空间中,已知向量的坐标,就可以知道它的模长。

\| \vec{v} \|= \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2}

我们定义一个求3维向量模长的函数:

> vector_length<-function(x1,x2,x3){

+ vlength<-sqrt (x1^2+x2^2+x3^2)

+ vlength

+ }

> vector_length(12,33,19)

[1] 39.92493

>

本博客所有内容是原创,未经书面许可,严禁任何形式的转载。

ttp://blog.csdn.net/u010255642


我们再定义一个n维的求向量模长的函数

> vectorn_length<-function(x){

+ temp<-0

+ for (i in 1:length(x)){

+ temp<-temp+x[i]^2

+ }

+ vlength<-sqrt(temp)

+ vlength

+ }

> vectorn_length(c(11,22,33,44,55))

[1] 81.57818

> vectorn_length(c(11,22,33,55))

[1] 68.69498

>

操作符的定义使用%符号%的方式定义,实际使用时%也属于操作符的一部分。我们定义一个操作符求欧氏距离。

欧氏距离(Euclid Distance)是在n维空间中两个点之间的真实距离,n维欧氏空间的每个点可以表示为 (x[1]x[2],…,x[n]) ,两个点 X = (x[1]x[2],…,x[n]) 和 Y= (y[1]y[2],…,y[n]) 之间的距离 d(X,Y) 定义为下面的公式:

d(XY) =sqrt   (∑( ( x[i] - y[i] )^2 ))  其中 i = 12,…,n

%~%为操作符:

> "%~%"<-function(x1,x2){

+ temp<-0

+ for (i in 1:length(x1)){

+ temp<-temp+(x1[i]-x2[i])^2

+ }

+ edis<-sqrt(temp)

+ edis

+ }

> c(1,2,3) %~% c(5,6,7)

[1] 6.928203

指定参数的默认值,在函数调用时可以省略该参数,通过在function随后的参数表中直接指定

> vectorn_length<-function(x=c(1,1,1)){

+ temp<-0

+ for (i in 1:length(x)){

+ temp<-temp+x[i]^2

+ }

+ vlength<-sqrt(temp)

+ vlength

+ }

> vectorn_length()

[1] 1.732051

> vectorn_length(c(11,11,11))

[1] 19.05256


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值