我将使用by
参数通过引用生成一个新的data.table列。如果组结果具有不同的数据类型(这里是int
和num
),则根据组数据类型的顺序,它们将被强制为相同的数据类型(这里是num
到int
)。第一个示例没有生成警告,但第二个示例生成了警告。为什么?
R版本4.0.4
数据表版本1.14.8
library(data.table)
DT <- data.table(a = c("rpois", "rnorm"))
DT[, b := ifelse(a == "rpois", 1L, 1.0), by = "a"]
set.seed(6)
DT[, c := match.fun(a)(1, 1), by = "a"]
str(DT)
1条答案
按热度按时间zphenhs41#
我们来看一下警告:
它警告您“精度丢失”。当
1.0
转换为1
时,精度不会丢失,因为它们在数学上相等。如果您的第一个示例确实丢失了精度,您将收到相同的警告: