首页 > 解决方案 > dplyr 将具有更改参数的单个函数应用于同一列

问题描述

我有一个带有一列的简单 df,我想使用单个函数(sum_x在本例中)创建多个新列,并且只更改一个参数。有没有办法比我在下面显示的方式更有效地做到这一点dplyr?理想情况下,我可以sum_vec在一行中合并并执行此操作以创建 100 个新列。这似乎是一个非常简单的问题,但我不知道如何有效地使用dplyr.

df <- data.frame(x = 1:20)
sum_x <- function(x, y){
 x + y
}

sum_vec <- 1:100
df %>% mutate(x_1 = sum_x(x, 1)) %>% mutate(x_2 = sum_x(x, 2)) %>% mutate(x_3 = sum_x(x, 3))

标签: rdplyr

解决方案


试试这种方式

library(tidyverse)
bind_cols(df, map_dfc(1:3, ~ df %>% transmute(!!paste0("x_", .x) := x + .x)))

    x x_1 x_2 x_3
1   1   2   3   4
2   2   3   4   5
3   3   4   5   6
4   4   5   6   7
5   5   6   7   8
6   6   7   8   9
7   7   8   9  10
8   8   9  10  11
9   9  10  11  12
10 10  11  12  13
11 11  12  13  14
12 12  13  14  15
13 13  14  15  16
14 14  15  16  17
15 15  16  17  18
16 16  17  18  19
17 17  18  19  20
18 18  19  20  21
19 19  20  21  22
20 20  21  22  23

推荐阅读