我想修改data.table在一个功能范围内。如果我使用:=函数中的特性,结果仅用于第二次调用。
请看下面的插图:
library(data.table)
mydt <- data.table(x = 1:3, y = 5:7)
myfunction <- function(dt) {
dt[, z := y - x]
dt
}
当我只调用函数时,表就不会打印(这是标准行为)。但是,如果我保存返回的data.table在一个新的对象中,它不是在第一个调用时打印出来的,而是为第二个调用而打印的。
myfunction(mydt) # nothing is printed
result <- myfunction(mydt)
result # nothing is printed
result # for the second time, the result is printed
mydt
# x y z
# 1: 1 5 4
# 2: 2 6 4
# 3: 3 7 4
你能解释一下为什么会发生这种情况吗?如何防止?
Helenr