我正在尝试添加列,rowSums
因为它是一个快速函数,使用 cur_column 因为选择列取决于初始列a_value
b_value
。这是一个代表,所以它需要使用rowSums
cur_column
或类似的东西,因为它将用于数千行和 ~ 16 列。
输入:
library(tidyverse)
df <- tibble(
a_value = c(1, 2, 3),
b_value = c(4, 5, 6),
a_param1 = c(7, 8, 9),
b_param1 = c(10, 11, 12),
a_param2 = c(13, 14, 15),
b_param2 = c(16, 17, 18),
a_param3 = c(19, 20, 21),
b_param3 = c(22, 23, 24),
a_param4 = c(25, 26, 27),
b_param4 = c(28, 29, 30)
)
输入的结果。
# A tibble: 3 x 10
a_value b_value a_param1 b_param1 a_param2 b_param2 a_param3 b_param3 a_param4 b_param4
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 4 7 10 13 16 19 22 25 28
2 2 5 8 11 14 17 20 23 26 29
3 3 6 9 12 15 18 21 24 27 30
所需的输出。value_value_exc_param是a|b
_param和_param之和i
i+1
a|b
i
a|b
i+1
# A tibble: 3 x 14
a_value b_value a_param1 b_param1 a_param2 b_param2 a_param3 b_param3 a_param4 b_param4 a_value_exc_param_12 b_value_exc_param_12 a_value_exc_param_34 b_value_exc_param_34
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 4 7 10 13 16 19 22 25 28 20 26 44 50
2 2 5 8 11 14 17 20 23 26 29 22 28 46 52
3 3 6 9 12 15 18 21 24 27 30 24 30 48 54
到目前为止我尝试了什么,它不起作用:
df %>%
mutate(
across(
contains("_value"),
list(
param_12 = rowSums(~ select(.,
get(str_replace(cur_column(), "_value", "_param1")),
get(str_replace(cur_column(), "_value", "_param2"))
)
),
param_34 = rowSums(~ select(.,
get(str_replace(cur_column(), "_value", "_param3")),
get(str_replace(cur_column(), "_value", "_param4"))
)
),
.names = "{.col}_exc_{.fn}"
)
)
)
可能还有另一种我不知道的简单有效的方法,请随时提供,谢谢。