我想在一个函数内修改一个 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
你能解释一下为什么会发生这种情况以及如何预防吗?
data.table
常见问题解答的第 2.23 节 (vignette("datatable-faq", package = "data.table")
)。 - Uwe