![55bbd1bcfffdb96a42aba2d9d26e2c94.png](https://i-blog.csdnimg.cn/blog_migrate/d71bc2e34a4c95376674ad69a6e9554a.jpeg)
【小白福利】从零开始学习R语言(一)——数据结构之“向量(Vector):
Nick WU:【小白福利】从零开始学习R语言(一)——数据结构之“向量”zhuanlan.zhihu.com![a9ff466333410507d8af28ee524f567b.png](https://i-blog.csdnimg.cn/blog_migrate/8f5d3cf4c8f1f5e98ccb5e73070272dd.jpeg)
【小白福利】从零开始学习R语言(二)——数据结构之“因素(Factor)”:
Nick WU:【小白福利】从零开始学习R语言(二)——数据结构之“因素(Factor)”zhuanlan.zhihu.com![4c0c1622ccd462fb9f34be5f512ba9af.png](https://i-blog.csdnimg.cn/blog_migrate/1dcf74f2eedf2e4c9025d5197805fc7c.jpeg)
【小白福利】从零开始学习R语言(三)——数据结构之“矩阵(Matrix)”:
Nick WU:【小白福利】从零开始学习R语言(三)——数据结构之“矩阵(Matrix)”zhuanlan.zhihu.com![4c0c1622ccd462fb9f34be5f512ba9af.png](https://i-blog.csdnimg.cn/blog_migrate/1dcf74f2eedf2e4c9025d5197805fc7c.jpeg)
【小白福利】从零开始学习R语言(四)——数据结构之“数组(Array)”:
Nick WU:【小白福利】从零开始学习R语言(四)——数据结构之“数组(Array)”zhuanlan.zhihu.com![4c0c1622ccd462fb9f34be5f512ba9af.png](https://i-blog.csdnimg.cn/blog_migrate/1dcf74f2eedf2e4c9025d5197805fc7c.jpeg)
【小白福利】从零开始学习R语言(五)——数据结构之“列表(List)”:
Nick WU:【小白福利】从零开始学习R语言(五)——数据结构之“列表(List)”zhuanlan.zhihu.com![4c0c1622ccd462fb9f34be5f512ba9af.png](https://i-blog.csdnimg.cn/blog_migrate/1dcf74f2eedf2e4c9025d5197805fc7c.jpeg)
【小白福利】从零开始学习R语言(六)——数据结构之“数据框(Data Frames)”:
Nick WU:【小白福利】从零开始学习R语言(六)——数据结构之“数据框(Data Frames)”zhuanlan.zhihu.com![4c0c1622ccd462fb9f34be5f512ba9af.png](https://i-blog.csdnimg.cn/blog_migrate/1dcf74f2eedf2e4c9025d5197805fc7c.jpeg)
【小白福利】从零开始学习R语言(七)——函数:
Nick WU:【小白福利】从零开始学习R语言(七)——函数zhuanlan.zhihu.com![ee2969190f6cdc7d05568cd56f6c4732.png](https://i-blog.csdnimg.cn/blog_migrate/4b0f39dbf16ab5fb74cece6790b9bd5d.jpeg)
【小白福利】从零开始学习R语言(八)——R语言绘图:
Nick WU:【小白福利】从零开始学习R语言(八)——R语言绘图zhuanlan.zhihu.com![ee2969190f6cdc7d05568cd56f6c4732.png](https://i-blog.csdnimg.cn/blog_migrate/4b0f39dbf16ab5fb74cece6790b9bd5d.jpeg)
函数是各种编程语言都很常见的功能,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') #输出完一行后换行
}
}