Я хотел бы изменить 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
Не могли бы вы объяснить, почему это происходит и как его предотвратить?