【发布时间】:2021-10-16 11:01:35
【问题描述】:
在 R 中,当我使用 mutate across 时,对于新创建的列,我想删除现有列名中的一串文本,然后在末尾添加一个后缀。
这是一个例子:
数据框:
d <- data.frame(alpha_rate=1:3, beta_rate=4:6, gamma_rate=7:9)
d
alpha_rate beta_rate gamma_rate
1 1 4 7
2 2 5 8
3 3 6 9
my_function <- function(x) {(x*8)}
columns_i_want <- c("alpha_rate", "beta_rate")
d <- d %>% mutate(across(all_of(columns_i_want), my_function, .names = "{col}_new"))
数据框现在具有以下列名称:
- “alpha_rate”、“beta_rate”、“gamma_rate”、“alpha_rate_new”、“beta_rate_new”
有没有办法在 names 参数中 将这些新创建的列改为 this(即删除 rate,然后删除后缀 _new):
- “alpha_rate”、“beta_rate”、“gamma_rate”、“alpha_new”、“beta_new”
【问题讨论】:
-
您可以使用命名参数和带有
.names的函数。有关更多信息,请参阅here。欢迎来到 SO! -
你也可以使用
rename_with函数。 -
所以“命名参数”将是我想要的“_new”位,该函数将用于指定列名的第一位 - 中的“alpha”和“beta”位这个例子?该函数是否必须在 mutate(across ) 之外定义?感谢您的欢迎 :)