【问题标题】:data.table := assignments when variable has same name as a columndata.table := 变量与列同名时的赋值
【发布时间】:2015-09-23 11:35:10
【问题描述】:

我在为某个位置赋值时发现了这种奇怪的行为。如果变量与列同名,它认为我们正在谈论该列:

library(data.table)
dt1 <- data.table(a = integer(1))
a <- 18
dt1[1, a:=a]

结果:

> dt1
   a
1: 0

我们可以通过使用不同的名称来避免这种情况:

dt2 <- data.table(a = integer(1))
b <- 18
dt2[1, a:=b]

结果:

>dt2
    a
1: 18

但是有没有其他方法可以在不更改变量名称的情况下做到这一点?我读到了.() ..() 表示法,但我不确定我是否可以在这里使用它,比如:

dt1 <- data.table(a = integer(1))
a <- 18
dt1[1, a:=..(a)]

Error in eval(expr, envir, enclos) : could not find function ".."

【问题讨论】:

标签: r data.table


【解决方案1】:

您始终可以使用get,它允许您指定环境:

dt1[1, a := get("a", envir = .GlobalEnv)]
#    a
#1: 18

或者只是:

a <- 42
dt1[1, a := .GlobalEnv$a]
#    a
#1: 42

【讨论】:

猜你喜欢
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多