任务6: Apply函数类型及其使用
Apply函数家族是处理数据的一组函数,可以循环处理数据,非常强大。与for循环相比,可以节省循环耗时,和计算空间。在碰到循环时,可以优先使用apply家族函数。
家族包括,apply, tapply, mapply, lapply, eapply, sapply, rapply。根据输入的对象不同,和输出的格式不同,所以有多个函数组成这个家族。以下对常用的函数进行介绍:

  • apply函数: 对矩阵,数据框,数组进行处理

    1. apply(X, MARGIN, FUN, ...)
    2. ##### example
    3. x <- data.frame("age" = c(11,12,13), "grade" = c(90, 100, 110))
    4. apply(x, 2, mean)
    5. > apply(x, 2, mean)
    6. # age grade
    7. # 12 100
  • 参数:

    • X为输入元素:matrix, data.frame, array
    • MARGIN: 按行或者按列计算,1表行,2表示列
    • FUN:自定义函数
    • …: 额外自选参数
  • 返回值:vector, matrix

  • lapply函数:可以对list, data.frame, vetor进行操作,特点是输出为与输入对象X同样长度的list ``` lapply(X, FUN, …)

    example

    x <- list(“age” = c(11,12,13), “grade” = rnorm(100, 10, 10)) lapply(x, mean)

    lapply(x, mean)

    $age

    [1] 12

$grade

[1] 8.631258

  1. - 参数:
  2. - X为输入对象,可以是list, data.frame
  3. - FUN:自定义的函数
  4. - ...: 额外自选参数
  5. - Sapply函数:简化版的lapply,特点是输出值可以为向量, 矩阵, 或数据框

sapply(X, FUN, …, simplify = TRUE, USE.NAMES = TRUE)

example

x <- list(“age” = c(11,12,13), “grade” = rnorm(100, 10, 10)) sapply(x, mean, simplify = TRUE, USE.NAMES = TRUE)

sapply(x, mean, simplify = TRUE, USE.NAMES = TRUE)

age grade

12.000000 8.631258

```

  • 参数:

    • X为输入对象:list, matrix, data.frame
    • FUN:自定义的函数
    • …: 额外自选参数
    • simplify:是否数组化,当设置simplify=’array’时,输出结果按数组进行分组
    • USE.NAMES:如果X为字符串,TRUE设置字符串为数据名,FALSE不设置
  • tapply函数 ``` tapply(X, INDEX, FUN, …, simplify = TRUE)

    example

    tapply(X = iris$Petal.Length,INDEX = iris$Species,FUN = mean)

    setosa versicolor virginica

    1.462 4.260 5.552

  1. - 参数
  2. - X为输入对象:vector
  3. - INDEX: 分组的索引
  4. - FUN:自定义的函数
  5. - ...: 额外自选参数
  6. - simplify:是否数组化,当设置simplify='array'时,输出结果按数组进行分组
  7. 任务7: 代码作业

Medical.Science <- c(“clinical medicine”, “Nursing”, “Basic Medicine”, “Pharmacy”) score <- c(1, 2, NA, 4) grade <- data.frame(Medical.Science, score) Nursing <- subset(grade, grade$Medical.Science == “Nursing”) colnames(grade) colnames(grade)[2] <- “Scale” table(grade$Medical.Science) ``` 2021.12.1 I one