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

Posted

技术标签:

【中文标题】重新编码数据框变量时,分配没有按预期工作?【英文标题】:Assign is not working as expected when recoding data frame variables? 【发布时间】:2015-10-06 21:26:59 【问题描述】:

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

有谁知道为什么,

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

似乎对dataframe$col1没有影响?

【问题讨论】:

最好使用[而不是$ 这背后的原因是什么?我对 R 非常陌生。 在这种情况下,您没有以正确的方式使用参数 【参考方案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)

【讨论】:

哇,非常感谢!我之前尝试过使用 get 的变体,这是我从不同的答案中看到的,但 assign 一直告诉我我没有有效的论据。这也很好地概括了我的反向编码变量函数。 @Marcus get 如果您传递的是string,则需要 你太快了,我被告知我必须等待五分钟才能接受你的回答。 @Marcus 谢谢,我忘了持有时间:-)

以上是关于重新编码数据框变量时,分配没有按预期工作?的主要内容,如果未能解决你的问题,请参考以下文章

Django模板如果没有按预期工作

重新编码连续变量_summary

python - 如何按python中的因子级别对pandas数据框中的行进行重新排序?

(Nuxt)页面不会在重新加载时重新呈现数据

为啥我的 Java 方法不能更改传递的变量? [复制]

如何仅减慢当前请求的速度? sleep() 没有按预期工作