从零开始学习R语言(七)——函数

本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/61142959

也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/12568362.html


函数是各种编程语言都很常见的功能,R语言有很多的内置函数,但通过自定义函数,我们可以创建能实现自己想要功能的函数。

R语言自定义函数的结构

func_name <- function (args) {
    func_body
    return (value)
}

其中,func_name是自定义函数的名称,args为函数的参数(可选),func_body部分为函数的主体部分,函数最后一般以return (value)结束,当执行该函数时返回value(可选)。

函数示例

示例1:自定义包含各种功能的统计函数

stats <- function(x,more=FALSE) {  #参数more的默认值是FALSE,若不赋值则为FALSE
   stats_ans <- list()      #创建一个空列表,作为最后输出的内容
   x_clean <- x[!is.na(x)]  #首先对数据进行清洗,去除缺省值NA,x_clean为清洗后的数据(若数据中含有NA,则mean()、std()等内置函数无法顺利进行)
​
   stats_ans$n <- length(x) #计算x中元素的个数
   stats_ans$NA_num <- stats_ans$n-length(x_clean) #计算被清洗掉的元素个数(即NA的个数)
   stats_ans$mean <- mean(x_clean)  #计算平均数
   stats_ans$std <- sd(x_clean)     #计算标准差
   stats_ans$med <- median(x_clean) #计算中位数
   if (more) {               #如果参数more为True,则执行更多计算
     stats$skew <- sum(((x_clean-stats_ans$mean)/stats$std)^3)/length(x_clean)
     stats$kurt <- sum(((x_clean-stats_ans$mean)/stats$std)^4)/length(x_clean) - 3
   }
    return (stats_ans)  #返回列表stats_ans
}

示例2:自定义九九乘法表显示函数

nine_multi <- function(i=0){
    #该函数用来显示九九乘法表前i行的内容
    if (i != as.integer(i) | (i<1) | (i>9)){
        stop("请输入一个1-9的整数")  #如果输入的不是1-9之间的整数,则退出函数并报错
    }
    for (j in 1:i){  #第j行从1~i
        for (k in 1:j){  #第j行中的第k个元素从1~j
            cat(k, '*', j, '=', k*j,'  ')  #输出每一个元素
        }
        cat('\n')  #输出完一行后换行
    }
}

 

posted @ 2020-03-25 18:13  海淀区小吴同学  阅读(412)  评论(0编辑  收藏  举报