1.举个栗子
如何编写一个函数?
简单来说需要三步。
sum_hsy <- function(x,y) { #1.取一个有意义的函数名称;2.指明需要几个参数以及参数顺序
x+y #3.构造函数主体部分
}
sum_hsy(1,2)
2.可读性
如何让函数的可读性更好?
函数名称用动词短语,参数用名词,多字段用下划线分割
添加注释和header(RStudio的快捷键:Ctrl+Shift+R)
3.使用条件判断
以下面的四则运算函数为例
#当判断条件较多时,switch()比if...else...好一些
calculate <- function(x,y,op) {
switch (op,
plus = x+y,
minus = x-y,
times = x*y,
divide = x / y,
stop("Unknown op!")
)
}
calculate(1,2,"plus")
calculate2 <- function(x,y,op) {
if (identical(op,"plus")) {
x+y
} else if (identical(op,"minus")) {
x-y
} else if (identical(op,"times")) {
x*y
} else if (identical(op,"divide")) {
x / y
} else {
stop("Unknown op!")
}
}
calculate2(1,2,"plus")
if语句的简写
y <- 10
x <- if( y < 20) "low" else "high"
4.R中的函数参数
数据参数在前,如上面calculate()的x,y;细节参数在后,如上面calculate()的op,一般有默认值 (定义函数时设置,若调用函数时没有重新输入细节参数,则会沿用默认值)。
下面这个计算置信区间的函数比较重要,可以记一下。
calculate_mean_ci <- function(x,conf = 0.95) {
se <- sd(x) / sqrt(length(x))
alpha <- 1 - conf
mean(x)+se*qnorm(c(alpha / 2, 1 - alpha / 2))
}
x <- runif(100)
calculate_mean_ci(x)
calculate_mean_ci(x,conf = 0.99)
5.返回值
在R中通常是最后一个语句的值,也可以通过return()提前返回一个值(这时函数运行结束)。