重新编码数据框变量时,分配没有按预期工作?
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 谢谢,我忘了持有时间:-)以上是关于重新编码数据框变量时,分配没有按预期工作?的主要内容,如果未能解决你的问题,请参考以下文章