r - 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))
解决方案
试试这种方式
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
推荐阅读
- php - Jquery验证库不提交值
- java - JDBC 中的“上下文 lob 创建”是什么意思?
- javascript - 使用复选框从数组中添加和删除对象
- c - 如何在 C 中使用 strlen() 找到字符指针的长度?
- python - 比较对应的列并将结果存储在新列中
- python - 如何让 dag 获取调度实例的序列号(例如每周调度程序的 1、2、3、4)
- python-3.x - 使用参数 b'' 调用了纯 python 回调函数,丢失了 cython 函数中的实际数据
- java - Apache poi如何通过密码取消隐藏工作表?
- android - Trace_MediaProvider.csv 是什么?
- javascript - 如何使用reactjs组件仅选择组中的一个复选框