【发布时间】:2021-11-16 17:27:52
【问题描述】:
我想在函数中修改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
您能解释一下为什么会发生这种情况以及如何预防吗?
【问题讨论】:
-
阅读:github.com/Rdatatable/data.table/blob/master/…。 v 1.9.6 中修复的第一个 BUG
-
参见
data.tableFAQ (vignette("datatable-faq", package = "data.table")) 的第 2.23 节 -
更新到@DavidArenburg 的链接,现在应该是github.com/Rdatatable/data.table/blob/master/…(因为
NEWS.md被截断并且很多内容转移到NEWS.0.md)。
标签: r function data.table assignment-operator