如何在dplyr mutate中使用按列阴影的变量

Cor*_*ten 5 r dplyr tidyverse

给定的数据帧df和一个局部变量z,我想设置列ydf为等于z

df <- data.frame(x=1:5)
z <- 5
df %>%
  mutate(y = z)
Run Code Online (Sandbox Code Playgroud)

但是,如果在中z已经存在一个名为的列,则此列dfy等于该列,而不是等于局部变量的值:

df <- data.frame(x=1:5, z=4)
z <- 5
df %>%
  mutate(y = z)
Run Code Online (Sandbox Code Playgroud)

我如何确保将其设置为局部变量,而不管其中的列如何df

(我知道我可以重命名/删除有问题的列,但是我正在处理其列在运行时之前未知的数据。)

akr*_*run 4

一个选项是在全局环境而不是本地环境中检查对象

library(dplyr)
df %>% 
   mutate(z = .GlobalEnv$z)
Run Code Online (Sandbox Code Playgroud)

  • 另一个是 `df %&gt;% mutate(new_col = get('z', envir =.GlobalEnv))` (2认同)