R中的函数

编程入门 行业动态 更新时间:2024-10-19 00:31:03

R中的<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数"/>

R中的函数

一、函数的定义格式为:

>name <- function(arg_1, arg_2, ...) expression

 

可以看做是:y=f(x)的写法。 expression是R的表达式,括号内是参数,放在函数最后的是返回值,返回值可以是向量,数组,列表,数据框。 R函数是一定要有返回值的。

二、函数的语句:

 

if:

switch:

for:

while:

repeat:

break,next:

二、函数的导入和应用

①函数可以以文件的形式写,然后存储为R文件,例如:newtest1.R

②导入函数:source("newtest1.R")即可直接在console中调用了。

③下面来看一个函数的实例:

f3=function(f,a,b,eps){
  if(f(a)*f(b)>0)
    list(fail="finding root is fail")
  else{
    repeat{
      if(abs(b-a)<eps) break
      x=(a+b)/2
      if(f(a)*f(x)<0) b=x else a=x
    }
    list(root=(a+b)/2,fun=f(x))
  }
}

上面的函数名字为f3,总共有4参数,原来真的不需要分号“;”。。。R的函数一定要有返回值,但是不用return,最后一行就是它的返回值。

回忆一下其他语言的函数写法:

Java: 

public String saySomething(String x,String y){

System.out.pirntInt(x+y);

}

因为Java是纯面向对象的,所以定义函数每个参数特别繁琐。每个参数都有类型,每个函数都是调用了某个类的方法。

Python:

def saysomething(x,y):

    print x+y

python是真的很简单,定义函数时候不需要对参数类型的定义事先定义。画外音:“我的空格确实是4个。。。”

下面分析上面的小函数:

首先if语句判断,并没有什么特别的,如果判定值是真,那么返回一个list的数据对象。

否则,如果为假,就用repeat函数迭代,最终返回一个list。

 

④另一个函数

7

已知两个样本A和B:

A:79.98 80.04 80.02 80.04 80.03 80.03 80.04 79.9780.05 80.03 80.02 80.00 80.02

B: 80.02 79.94 79.98 79.97 79.97 80.03 79.95 79.97
求两个样本的T统计量:

解答:函数的写法为:

T=function(x1,x2){
  n1=length(x1)
  n2=length(x2)
  m1=mean(x1)
  m2=mean(x2)
  s1=var(x1)
  s2=var(x2)
  s=((n1-1)*s1+(n2-1)*s2)/(n1+n2-2)
  (m1-m2)/sqrt(s*(1/n1+1/n2))
  
}

> A=c(1,2,3,4,5,6,7)
> B=c(3,4,2,5,4,4,7)
> T(A,B)
[1] -0.1414214

 

 

 

 

 

 

 

 

 

 

 

 

更多推荐

R中的函数

本文发布于:2023-06-26 04:15:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/889143.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!