从零开始学习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‘)  #输出完一行后换行
    }
}

原文地址:https://www.cnblogs.com/nickwu/p/12568362.html

时间: 2024-07-30 08:24:30

从零开始学习R语言(七)——函数的相关文章

从零开始学习R语言(五)——数据结构之“列表(List)”

本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141740 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/12567803.html 5. 列表(list) R语言中的列表和Python等语言中的list有所不同.R语言中的列表是对象的集合, 列表中的对象又称为它的分量(components). 分量可以包含向量.矩阵.数组,数据框,甚至是另外一个列表,且在列表中要求每一个分量都要有一个名称. my_list <-

从零开始学习R语言(四)——数据结构之“数组(Array)”

本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141207 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/12567789.html 4. [三维+]:数组(Array) R语言中数组可以看做是矩阵的扩展,它将矩阵扩展到2维以上.如果给定的数组是1维的则相当于向量,2维的相当于矩阵.R语言中的数组元素的类型也是单一的,可以是数值型,逻辑型,字符型或复数型等. R语言中数组的使用 4.1 数组的创建 语法:array

从零开始学习R语言(六)——数据结构之“数据框(Data Frames)”

本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141998 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/12568348.html 6. 数据框(Data Frames) Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的.Data Frame每一列有列名,每一行也可以指定行名.如果不指定行名,那么就是从1开始自

R语言——绘图函数深入学习

利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in package ¡®datasets¡¯: AirPassengers Monthly Airline Passenger Numbers 1949-1960 BJsales Sales Data with Leading Indicator BJsales.lead (BJsales) Sales Data wit

从零开始系列-R语言基础学习笔记之二 数据结构(一)

在上一篇中我们一起学习了R语言的环境搭建,这次我们开始学习R语言的数据结构第一部分:向量.数组和矩阵. 一.向量 向量是一维数组,其内容可以是数值.字符或布尔值,但所有数据的类型必须一致.创建向量使用的关键字是c,访问向量中的元素使用[],具体如下: 创建数值向量a<-c(1,2,3,4,5,6) 创建字符向量b<-c("a","b","c") 创建布尔向量c<-c(TRUE,FALSE) 访问向量: a[3] 得到的值是3,注

手把手教你学习R语言

本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反而会让人挑花了眼. 为了构建R语言学习方法,我们在Vidhya和DataCamp中选一组综合资源,帮您从头学习R语言.这套学习方法对于数据科学或R语言的初学者会很有用;如果读者是R语言的老用户,则会由本文了解这门语言的部分最新成果. R语言学习方法会帮助您快速.高效学习R语言. 前言 在开始学习之前

如何从零开始学习Java语言

1.如何从零开始学习Java语言 许多朋友在学习新的语言上有些困惑,如何学好Java语言. 如何学好Java语言,分二种技术人员 1)第一种:有编程语言的技术人员 IT行业的朋友,应为本事就有编程语言的技术,学习Java语言不是困难的事情.所谓的懂一门语言就会其他语言.为什么这么说,应他们有一些编程的基本知识,他们知道如何去学习技术.(但这里有一点却记:不要认为自己懂了一门编程语言就学习其他语言很简单.就跳过一些基本知识不学习.)如果你是这样的话,请立即改正这错误观点,因为这样你即时学会了这门语

R语言seq()函数用法

1.seq() 用来生成一组数字的函数. Usage: ## Default S3 method:seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)seq.int(from, to, by, length.out, along.with, ...)seq_along(along.with)seq_len(length.out) Arguments:

R语言table()函数

R语言table()函数比较有用,两个示例尤其是混淆矩阵这个案例比较有用: 例子一:统计频次 z<-c(1,2,2,4,2,7,1,1);z1<-table(z);summary(z1); z1#实现z中各数据频次的统计z1 2 4 7 3 3 1 1 names(z1)#居然是有名字的[1] "1" "2" "4" "7"例子二:实现混淆矩阵 t=table(c(1,0,1,1,1,0,0,1),c(0,0,1,