重新编码数据框变量时,Assign 未按预期工作?

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

提问人:Marcus 提问时间:7/17/2015 更新时间:7/17/2015 访问量:33

问:

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

有谁知道为什么,

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

似乎对没有影响?dataframe$col1

r 全局变量 变量 值 赋 值运算符

评论

1赞 akrun 7/17/2015
最好使用而不是[$
0赞 Marcus 7/17/2015
这背后的原因是什么?我对 R 非常陌生。
0赞 akrun 7/17/2015
在这种情况下,您没有以正确的方式使用参数

答:

1赞 akrun 7/17/2015 #1

使用 ,这可以通过复杂的方式完成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)

评论

0赞 Marcus 7/17/2015
哇,太感谢了!我之前尝试过这种变体,我从不同的答案中看到了这一点,但一直告诉我我没有有效的论据。这也很好地推广到我的反向编码变量函数。getassign
0赞 akrun 7/17/2015
如果您要通过@Marcusgetstring
1赞 Marcus 7/17/2015
你太快了,我被告知我必须等五分钟才能接受你的回答。
0赞 akrun 7/17/2015
@Marcus 谢谢,我忘记了等待时间:-)