A:如何在特定列上使用 apply() 函数


通常,您可能希望使用apply()函数将函数应用于 R 数据框中的特定列。

但是, apply()函数在应用函数之前首先强制数据框中的所有列具有相同的对象类型,这有时会产生意想不到的后果。

更好的选择是lapply()函数,它使用以下基本语法:

 df[c(' col1 ', ' col2 ')] <- lapply(df[c(' col1 ', ' col2 ')], my_function)

此特定示例仅将my_function函数应用于数据框中的col1col2

以下示例展示了如何在实践中使用此语法。

示例:将函数应用于数据框中的特定列

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(19, 22, 15, NA, 14, 25, 25, 25),
                 rebounds=c(10, 6, 3, 7, 11, 13, 9, 12),
                 assists=c(4, 4, 3, 6, 7, 5, 10, 8))

#view data frame
df

  team points rebound assists
1 A 19 10 4
2 A 22 6 4
3 to 15 3 3
4 A NA 7 6
5 B 14 11 7
6 B 25 13 5
7 B 25 9 10
8 B 25 12 8

现在假设我们定义以下函数,将值乘以 2,然后加 1:

 #define function
my_function <- function (x) x*2 + 1

我们可以使用以下lapply()函数将此函数仅应用于数据框中的反弹列:

 #apply function to specific columns
df[c(' points ', ' rebounds ')] <- lapply(df[c(' points ', ' rebounds ')], my_function)

#view updated data frame
df

  team points rebound assists
1 A 39 21 4
2 A 45 13 4
3 A 31 7 3
4 A NA 15 6
5 B 29 23 7
6 B 51 27 5
7 B 51 19 10
8 B 51 25 8

从结果中我们可以看到,我们将点数篮板数列中的每个值乘以 2,然后加 1。

另请注意,球队助攻栏保持不变。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

R 中 apply()、lapply()、sapply() 和 tapply() 指南
如何使用R中的变换函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注