重新编码数据框变量时,分配没有按预期工作?

Assign is not working as expected when recoding data frame variables?

我一直遇到一个问题,我一直在尝试一次重新编码许多变量。看起来最简单的方法是使用 assign 并将变量放在 .GlobalEnv 中。我现在看到它甚至在函数之外都不起作用。

有谁知道为什么,

assign('dataframe$col1', 3 - dataframe$col1, env = .GlobalEnv)

好像对dataframe$col1没有影响?

使用assign,这可以通过复杂的方式完成

 assign('dataframe', `[[<-`(dataframe, 'col',
              value = 3- dataframe$col), envir=.GlobalEnv)

 dataframe$col
 #[1]  2  1  0 -1 -2

不那么复杂也更安全

 dataframe$col <- 3-dataframe$col

或者如果您正在使用 data.table

 library(data.table)
 setDT(dataframe)[, col:= 3- col] 

并且dplyr/magrittr选项是

 library(dplyr)
 library(magrittr)
 dataframe %<>%
         mutate(col = 3 - col)

数据

 dataframe <- data.frame(col= 1:5)