簡體   English   中英

data.table:=變量與列同名時的賦值

[英]data.table := assignments when variable has same name as a column

在為位置分配值時,我發現了這種奇怪的行為。 如果變量與列相同,則認為我們正在討論該列:

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 ".."

您始終可以使用get ,它允許您指定環境:

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

要不就:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM