dplyr对同一列应用一个具有可变参数的函数
我有一个简单的df,只有一个列,我想用一个函数(dplyr对同一列应用一个具有可变参数的函数,r,dplyr,mutate,R,Dplyr,Mutate,我有一个简单的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 %>% mut
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))
df%突变(x_3=sum_x(x,3))
如果你不喜欢循环,我支持你。所以我不确定这是否好/有效。对更好的解决方案感兴趣
library(dplyr)
for (i in 1:100) {
x_header = paste("x", i, sep = "_")
df = df %>%
mutate(!!x_header := sum_x(x, i))
}
这样试试看
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
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