我想通过从其中减去名称几乎相同的另一列来更正 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"))
Run Code Online (Sandbox Code Playgroud)
而不是使用mutate_at为什么不使用mutate结合across和cur_column即:
df %>%
mutate( across( c(carb,disp), ~ . - pull(df, paste0(cur_column(), "_new") ), .names = "{.col}_corrected") )
Run Code Online (Sandbox Code Playgroud)