R,dpylr处理与列名相同的变量名

时间:2017-03-31 05:52:51

标签: r dplyr

当使用与列名相同的dplyr和variablenames时,如何区分这两者?

test <- c(1,2)
df <- data.frame(test = c(3,4))
df %>% mutate(test = test) # does not change anything

我也试过像

这样的东西
test <- c(1,2)
df <- data.frame(test = c(3,4))
df %>% mutate(test = interp(~x, x = as.name("test")))

强制使用(全局)变量&#34; test&#34;相反,遗憾的是没有成功。

我该如何处理这种情况?

编辑: 具有非非全局变量时,即函数参数

foo <- function(test) {
  df <- data.frame(test = c(3,4))
  env <- environment()
  df %>% mutate(test = env[["test"]])
}
foo(1:2)

技巧

1 个答案:

答案 0 :(得分:1)

我们可以使用.GlobalEnv来提取对象

df %>% 
    mutate(test = .GlobalEnv[["test"]])
#    test
#1    1
#2    2