zoukankan      html  css  js  c++  java
  • R语言-编写自定义函数 ZZ

    一、函数构造器

    每一个R函数都包括三个部分:函数名,程序主体以及参数集合,在编写自定义R函数时,需要将三个部分各自储存在一个R对象中。这里需要使用function函数,形如:
    my_function<-function(){}
    function函数可以将大括号内的代码内容构建成一个函数,例如:

    roll<-function(){
      dice<-sample(1:6,2,replace = T)#可重复抽样
      sum(dice)
    }
    roll()
    

    函数将返回最后一行的运行输出结果,如果最后一行不输出结果,整个函数也将不会有返回值

    二、含参函数的构造

    可以通过在括号里填入参数名称加以实现,具体如下:

    roll2<-function(bones){
      dice<-sample(bones,2,replace = T)#可重复抽样
      sum(dice)
    }
    > roll2()
    Error in sample(bones, 2, replace = T) : 
      argument "bones" is missing, with no default
    > roll2(1:10)
    [1] 11
     
    

    可以发现如果不写参数,R将报错,为了防止类似的错误发生,可以预先设置一个初始默认值给bones参数,只需在括号里用等号将默认值与参数相连即可。

    形如:

    roll3<-function(bones=1:6){
      dice<-sample(bones,2,replace = T)   #可重复抽样
      sum(dice)
    }
    > roll3()
    [1] 9
    

    三、提取函数

    就像其他语言的IDE一样,RStudio也提供了抽取函数的功能,在R脚本中选中对应的代码段,在菜单栏中选择Code>Extract Function即可。RStudio会询问给函数取什么名字,然后用function将所需函数包装起来,并会自动检查代码段中未定义的变量,将其设置为该函数的参数。
    提取函数之后,同志们记得检查一下,主要是看看有没有什么需要设置默认值的参数,或者函数有没有返回值之类的问题。

    四、查看函数

    不仅可以通过help查看函数解释,还可以通过直接输入函数名查看函数代码
    这就是开源的好处!

  • 相关阅读:
    typedef
    心目中的编程高手
    截取包含多字节字符的字符串
    Start deltacat Audio Mix Filter
    关于编译环境和DLL的惨痛教训
    【转】自定义Extjs中Grid单元格的显示格式
    Ajax 按需 提交指定字段 以 Json Model 形式 post 到 action
    [转]Log4Net 非常完整的配置。
    【转】Ext.data.Store
    this.getColumnModel is not a function Extjs 如何解决呢? Extjs 导出 到Excel 解决方案问题
  • 原文地址:https://www.cnblogs.com/juking/p/9029525.html
Copyright © 2011-2022 走看看