首页 > 解决方案 > 如何在 dplyr mutate 中使用列阴影的变量

问题描述

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

df <- data.frame(x=1:5)
z <- 5
df %>%
  mutate(y = z)

但是,如果名为 的列z已存在df,则设置y等于​​该列,而不是等于局部变量的值:

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

如何确保将其设置为局部变量,而不管 中存在什么列df

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

标签: rdplyrtidyverse

解决方案


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

library(dplyr)
df %>% 
   mutate(z = .GlobalEnv$z)

推荐阅读