首页 > 解决方案 > dplyr:在 mutate_at 函数中访问列名

问题描述

我想通过从其中减去另一列名称几乎相同的列来更正 data.frame 中的列,但另一列有后缀。我想为此使用该mutate_at功能。

试图弄清楚这一点,我一直在努力访问 mutate_at 函数部分中的列名,以使用它来访问另一列。

我在下面的一个小例子中展示了这一点,但基本上我想访问目前使用的列的名称,.然后从管道中的数据中选择一个与它具有相同名称.但带有后缀的列(下面会是"_new")。

谢谢你的帮助!

这是我希望如何做的一个例子 - 但这不起作用。

library(tidyverse)
data("mtcars")
new <- mtcars/4
names(new) <-paste0(names(new),"_new")

df <- bind_cols(mtcars,new)

df %>% 
  mutate_at(.vars = vars(carb,disp),
            .funs = list(corrected = ~ . - df %>% pull(paste0(names(.),"_new"))))

df %>% pull(paste0("carb","_new"))

标签: rdplyr

解决方案


而不是使用mutate_at为什么不使用与和mutate结合,即:acrosscur_column

df %>% 
  mutate( across( c(carb,disp), ~ . - pull(df, paste0(cur_column(), "_new") ),  .names = "{.col}_corrected") )

推荐阅读