data.table 中的字符不支持 Gforce 最小值
Gforce min not supported for character in data.table
尝试使用 data.table 1.9.4 获取字符向量的最小值时,出现以下错误:
Type 'character' not supported by GForce min (gmin).
Either add the prefix base::min(.) or turn off
GForce optimization using options(datatable.optimize=1)
很公平,但这破坏了我现有的很多代码!我可以使用 options(datatable.optimize=1)
关闭此优化。尽管如此,如果 is.character == TRUE
是否仍然可以简单地使用 base::min
,否则就使用 GForce 优化?
已在 commit 1734 of data.table v1.9.5 中实施。
require(data.table) ## 1.9.5
set.seed(1L)
DT = data.table(x=sample(3,10,TRUE), y=sample(letters[1:3], 10,TRUE))
options(datatable.verbose=TRUE)
DT[, .(min(y), max(y)), by=x]
# Detected that j uses these columns: y
# Finding groups (bysameorder=FALSE) ... done in 0secs. bysameorder=FALSE and o__ is length 10
# lapply optimization is on, j unchanged as 'list(min(y), max(y))'
# GForce optimized j to 'list(gmin(y), gmax(y))'
# x V1 V2
# 1: 1 a c
# 2: 2 a c
# 3: 3 b c
如有不妥请回信。
尝试使用 data.table 1.9.4 获取字符向量的最小值时,出现以下错误:
Type 'character' not supported by GForce min (gmin).
Either add the prefix base::min(.) or turn off
GForce optimization using options(datatable.optimize=1)
很公平,但这破坏了我现有的很多代码!我可以使用 options(datatable.optimize=1)
关闭此优化。尽管如此,如果 is.character == TRUE
是否仍然可以简单地使用 base::min
,否则就使用 GForce 优化?
已在 commit 1734 of data.table v1.9.5 中实施。
require(data.table) ## 1.9.5
set.seed(1L)
DT = data.table(x=sample(3,10,TRUE), y=sample(letters[1:3], 10,TRUE))
options(datatable.verbose=TRUE)
DT[, .(min(y), max(y)), by=x]
# Detected that j uses these columns: y
# Finding groups (bysameorder=FALSE) ... done in 0secs. bysameorder=FALSE and o__ is length 10
# lapply optimization is on, j unchanged as 'list(min(y), max(y))'
# GForce optimized j to 'list(gmin(y), gmax(y))'
# x V1 V2
# 1: 1 a c
# 2: 2 a c
# 3: 3 b c
如有不妥请回信。