R学习笔记(8):函数

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()提前返回一个值(这时函数运行结束)。

你可能感兴趣的:(R学习笔记(8):函数)