📜  如何将函数应用于 r 中的数据帧 (1)

📅  最后修改于: 2023-12-03 15:09:06.770000             🧑  作者: Mango

如何将函数应用于 R 中的数据框

在 R 中,数据框(data.frame)是处理数据的常见结构。当我们需要对数据框进行操作时,常常需要将函数应用于数据框中的某些列或行。本文将介绍如何在 R 中将函数应用于数据框。

1. apply() 函数

apply() 函数可用于应用指定函数于数据框中的每一行或每一列。

1.1 应用于每一行

以下示例演示了如何将函数应用于数据框每一行:

# 创建数据框
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))

# 定义函数,用于乘以每个元素
multiply <- function(row) {
  row * 2
}

# 应用函数到每一行,并生成新的数据框
df_new <- apply(df, 1, multiply)

# 显示新的数据框
df_new

输出结果如下:

     [,1] [,2] [,3]
[1,]    2    8   14
[2,]    4   10   16
[3,]    6   12   18
1.2 应用于每一列

以下示例演示了如何将函数应用于数据框每一列:

# 创建数据框
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))

# 定义函数,用于乘以每个元素
multiply <- function(col) {
  col * 2
}

# 应用函数到每一列,并生成新的数据框
df_new <- apply(df, 2, multiply)

# 显示新的数据框
df_new

输出结果如下:

  x  y  z
1 2  8 14
2 4 10 16
3 6 12 18
2. mutate() 函数

mutate() 函数可用于处理数据框中的列,并生成新的列。以下示例演示了如何使用 mutate() 函数将函数应用于数据框:

# 加载 tidyverse 包
library(tidyverse)

# 创建数据框
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))

# 用 mutate() 函数将函数应用于数据框,生成新的列
df_new <- df %>%
  mutate(new_col = x / y)

# 显示新的数据框
df_new

输出结果如下:

  x y z   new_col
1 1 4 7 0.2500000
2 2 5 8 0.4000000
3 3 6 9 0.5000000
3. lapply() 函数

lapply() 函数可用于应用指定函数于数据框中的每一列,并将结果存储到列表中。以下示例演示了如何将函数应用于数据框中的每一列:

# 创建数据框
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))

# 定义函数,用于乘以每个元素
multiply <- function(col) {
  col * 2
}

# 应用函数到每一列,并将结果存储到列表中
result_list <- lapply(df, multiply)

# 显示结果列表
result_list

输出结果如下:

$x
[1] 2 4 6

$y
[1]  8 10 12

$z
[1] 14 16 18
4. sapply() 函数

sapply() 函数是 lapply() 函数的简化版本,会自动尝试将结果转换为向量或矩阵。以下示例演示了如何将函数应用于数据框中的每一列,并将结果存储为矩阵:

# 创建数据框
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))

# 定义函数,用于乘以每个元素
multiply <- function(col) {
  col * 2
}

# 应用函数到每一列,并将结果存储为矩阵
result_matrix <- sapply(df, multiply)

# 显示结果矩阵
result_matrix

输出结果如下:

     x  y  z
[1,] 2  8 14
[2,] 4 10 16
[3,] 6 12 18

以上就是在 R 中将函数应用于数据框的方法。无论您选择哪种方法,都能让您轻松处理数据框中的数据。