R data.table 'variable <- names(DT)':变量被 := 运算符覆盖

R data.table 'variable <- names(DT)': variable gets overwritten with := operator

我有一个非常简单的代码可以在 R(和 data.table 包)中重现我的问题:

如果我在不使用 copy() 的情况下将列名保存到变量中,则在代码中使用 := 运算符 later 时它会被覆盖:

input_table = data.table(A = 1:3, B = 2:4)
some_value    = 0.025

original_colnames <- names(input_table)
original_colnames_copy <- copy(names(input_table))

identical(original_colnames, c("A", "B"))      # returns TRUE

# create a new column
input_table[, C   :=      A + some_value]

identical(original_colnames, c("A", "B"))      # returns FALSE, original_colnames contains "C" as well
identical(original_colnames_copy, c("A", "B")) # returns TRUE

如果我使用以下代码创建新列,此问题不会持续存在:

input_table = mutate(input_table, C= A + some_value)

这是有意为之吗(我是否遗漏了一些更深入的 R 知识/data.table)?

R.version是4.1.0,data.table版本是1.14.0.

在问题下方的评论中回答: Why does data.table update names(DT) by reference, even if I assign to another variable?