@@ -18623,60 +18623,60 @@ test(2232.4, unique(DT, by='g', cols='v3'), error="non-existing column(s)")
1862318623# support := with GForce #1414
1862418624options(datatable.optimize = 2L)
1862518625DT = data.table(a=1:3,b=(1:9)/10)
18626- test(2233.01, DT[, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:3)/10), output="GForce optimized j to")
18626+ test(2233.01, DT[, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:3)/10), output="GForce optimized j to")
1862718627# GForce returning full length
18628- test(2233.02, DT[, v := head(b, 3L ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:9 )/10), output="GForce optimized j to")
18628+ test(2233.02, DT[, v := shift(b ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=c(NA,NA,NA,(1:6 )/10) ), output="GForce optimized j to")
1862918629# GForce neither returning 1 per group nor full length
18630- test(2233.03, DT[, v := head(b, 2L), a], error="Supplied 6 items to be assigned to 9 items of column 'v'. ")
18631- # compare to non GForce version
18630+ test(2233.03, DT[, v := head(b, 2L), a], error="could be implemented ")
18631+ # ensure base:: and utils:: return the same result
1863218632DT = data.table(a=1:3,b=(1:9)/10)
18633- test(2233.04, copy(DT)[, v := min(b), a, verbose=TRUE], copy(DT)[, v := base::min(b), a, ], output="GForce optimized j to")
18634- test(2233.05, copy(DT)[, v := head(b, 3L), a, verbose=TRUE ], copy(DT)[, v := utils::head(b, 3L), a], output="GForce optimized j to" )
18633+ test(2233.04, copy(DT)[, v := min(b), a, verbose=TRUE], copy(DT)[, v := base::min(b), a, ], output="GForce optimized j to")
18634+ test(2233.05, copy(DT)[, v := b[1:3], a ], copy(DT)[, v := utils::head(b, 3L), a])
1863518635
1863618636# with key and grouping by key
1863718637DT = data.table(a=1:3,b=(1:9)/10, key="a")
18638- test(2233.06, DT[, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:3)/10, key="a"), output="GForce optimized j to")
18639- test(2233.07, DT[, v := head(b, 3L ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:9 )/10, key="a"), output="GForce optimized j to")
18640- test(2233.08, DT[, v := head(b, 2L), a], error="Supplied 6 items to be assigned to 9 items of column 'v'. ")
18638+ test(2233.06, DT[, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:3)/10, key="a"), output="GForce optimized j to")
18639+ test(2233.07, DT[, v := shift(b ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=c(NA,NA,NA,(1:6 )/10) , key="a"), output="GForce optimized j to")
18640+ test(2233.08, DT[, v := head(b, 2L), a], error="could be implemented ")
1864118641DT = data.table(a=1:3,b=(1:9)/10, key="a")
18642- test(2233.09, copy(DT)[, v := min(b), a, verbose=TRUE], copy(DT)[, v := base::min(b), a, ], output="GForce optimized j to")
18643- test(2233.10, copy(DT)[, v := head(b, 3L), a, verbose=TRUE ], copy(DT)[, v := utils::head(b, 3L), a], output="GForce optimized j to" )
18642+ test(2233.09, copy(DT)[, v := min(b), a, verbose=TRUE], copy(DT)[, v := base::min(b), a, ], output="GForce optimized j to")
18643+ test(2233.10, copy(DT)[, v := b[1:3], a ], copy(DT)[, v := utils::head(b, 3L), a])
1864418644
1864518645# with key and grouping by nonkey
1864618646DT = data.table(a=1:3,b=(1:9)/10,c=(3:1),key="c")
18647- test(2233.11, DT[, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=(1:3)/10, key="c"), output="GForce optimized j to")
18648- test(2233.12, DT[, v := head(b, 3L ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=(1:9 )/10, key="c"), output="GForce optimized j to")
18649- test(2233.13, DT[, v := head(b, 2L), a], error="Supplied 6 items to be assigned to 9 items of column 'v'. ")
18647+ test(2233.11, DT[, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=(1:3)/10, key="c"), output="GForce optimized j to")
18648+ test(2233.12, DT[, v := shift(b ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=c(NA,NA,NA,1:6 )/10, key="c"), output="GForce optimized j to")
18649+ test(2233.13, DT[, v := head(b, 2L), a], error="could be implemented ")
1865018650DT = data.table(a=1:3,b=(1:9)/10,c=(3:1),key="c")
18651- test(2233.14, copy(DT)[, v := min(b), a, verbose=TRUE], copy(DT)[, v := base::min(b), a, ], output="GForce optimized j to")
18652- test(2233.15, copy(DT)[, v := head(b, 3L), a, verbose=TRUE ], copy(DT)[, v := utils::head(b, 3L), a], output="GForce optimized j to" )
18651+ test(2233.14, copy(DT)[, v := min(b), a, verbose=TRUE], copy(DT)[, v := base::min(b), a, ], output="GForce optimized j to")
18652+ test(2233.15, copy(DT)[, v := b[1:3], a ], copy(DT)[, v := utils::head(b, 3L), a])
1865318653
1865418654# with key and keyby by nonkey
1865518655DT = data.table(a=1:3,b=(1:9)/10,c=(3:1),key="c")
18656- test(2233.16, copy(DT)[, v := min(b), keyby=a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=(1:3)/10, key="a"), output="GForce optimized j to")
18657- test(2233.17, copy(DT)[, v := head(b, 3L ), keyby=a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=(1:9 )/10, key="a"), output="GForce optimized j to")
18658- test(2233.18, copy(DT)[, v := head(b, 2L), keyby=a], error="Supplied 6 items to be assigned to 9 items of column 'v'. ")
18656+ test(2233.16, copy(DT)[, v := min(b), keyby=a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=(1:3)/10, key="a"), output="GForce optimized j to")
18657+ test(2233.17, copy(DT)[, v := shift(b ), keyby=a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, c=(3:1), v=c(NA,NA,NA,1:6 )/10, key="a"), output="GForce optimized j to")
18658+ test(2233.18, copy(DT)[, v := head(b, 2L), keyby=a], error="could be implemented ")
1865918659DT = data.table(a=1:3,b=(1:9)/10,c=(3:1),key="c")
18660- test(2233.19, copy(DT)[, v := min(b), keyby=a, verbose=TRUE], copy(DT)[, v := base::min(b), keyby=a], output="GForce optimized j to")
18661- test(2233.20, copy(DT)[, v := head(b, 3L), keyby=a, verbose=TRUE ], copy(DT)[, v := utils::head(b, 3L), keyby=a], output="GForce optimized j to" )
18660+ test(2233.19, copy(DT)[, v := min(b), keyby=a, verbose=TRUE], copy(DT)[, v := base::min(b), keyby=a], output="GForce optimized j to")
18661+ test(2233.20, copy(DT)[, v := b[1:3], keyby=a], copy(DT)[, v := utils::head(b, 3L), keyby=a])
1866218662# with irows
1866318663DT = data.table(a=1:3,b=(1:9)/10)
18664- test(2233.21, DT[a==2, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=c(NA,0.2,NA)), output="GForce optimized j to")
18665- test(2233.22, DT[a!=4, v := head(b, 3L ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=(1:9 )/10), output="GForce optimized j to")
18666- test(2233.23, DT[a!=4, v := head(b, 2L), a], error="Supplied 6 items to be assigned to 9 items of column 'v'. ")
18664+ test(2233.21, DT[a==2, v := min(b), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=c(NA,0.2,NA)), output="GForce optimized j to")
18665+ test(2233.22, DT[a!=4, v := shift(b ), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v=c(NA,NA,NA,1:6 )/10), output="GForce optimized j to")
18666+ test(2233.23, DT[a!=4, v := head(b, 2L), a], error="could be implemented ")
1866718667DT = data.table(a=1:3,b=(1:9)/10)
18668- test(2233.24, copy(DT)[a==2, v := min(b), a, verbose=TRUE], copy(DT)[a==2, v := base::min(b), a, ], output="GForce optimized j to")
18669- test(2233.25, copy(DT)[a!=4, v := head(b, 3L), a, verbose=TRUE ], copy(DT)[a!=4, v := utils::head(b, 3L), a], output="GForce optimized j to" )
18668+ test(2233.24, copy(DT)[a==2, v := min(b), a, verbose=TRUE], copy(DT)[a==2, v := base::min(b), a, ], output="GForce optimized j to")
18669+ test(2233.25, copy(DT)[a!=4, v := b[1:3], a ], copy(DT)[a!=4, v := utils::head(b, 3L), a])
1867018670
1867118671# multiple assignments
1867218672DT = data.table(a=1:3,b=(1:9)/10)
18673- test(2233.26, DT[, c("v1","v2") := .(min(b), max(b)), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v1=(1:3)/10, v2=(7:9)/10), output="GForce optimized j to")
18674- test(2233.27, DT[, c("v1","v2") := .(head(b,3L ), tail (b,3L )), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v1=(1:9 )/10, v2=(1:9 )/10), output="GForce optimized j to")
18675- test(2233.28, DT[, c("v1","v2") := .(head(b,3L ), tail (b,2L )), a], error="Supplied 6 items to be assigned to 9 items of column 'v2'. ")
18676- test(2233.29, DT[, c("v1","v2") := .(head(b,2L ), tail(b,3L )), a], error="Supplied 6 items to be assigned to 9 items of column 'v1'. ")
18677- test(2233.30, DT[, c("v1","v2") := .(head(b,2L), tail(b,2L)), a], error="Supplied 6 items to be assigned to 9 items of column 'v1'. ")
18678- test(2233.31, DT[, c("v1","v2") := .(min(b), max(b)), a, verbose=TRUE], DT[, c("v1","v2") := .(base::min(b), base::max(b)), a ], output="GForce optimized j to")
18679- test(2233.32, DT[, c("v1","v2") := .(head(b,3L), tail(b,3L)), a, verbose=TRUE ], DT[, c("v1","v2") := .(utils::head(b,3L), utils::tail(b,3L)), a], output="GForce optimized j to ")
18673+ test(2233.26, DT[, c("v1","v2") := .(min(b), max(b)), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v1=(1:3)/10, v2=(7:9)/10), output="GForce optimized j to")
18674+ test(2233.27, DT[, c("v1","v2") := .(shift(b ), shift (b,2L )), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v1=c(NA,NA,NA,1:6 )/10, v2=c(NA,NA,NA,NA,NA,NA,1:3 )/10), output="GForce optimized j to")
18675+ test(2233.28, DT[, c("v1","v2") := .(shift(b ), head (b,3L )), a], error="head.*:=.*could be implemented ")
18676+ test(2233.29, DT[, c("v1","v2") := .(min(b ), shift(b )), a, verbose=TRUE], data.table(a=1:3, b=(1:9)/10, v1=(1:3)/10, v2=c(NA,NA,NA,1:6)/10), output="GForce optimized j to ")
18677+ test(2233.30, DT[, c("v1","v2") := .(head(b,2L), tail(b,2L)), a], error="head.*:=.*could be implemented ")
18678+ test(2233.31, DT[, c("v1","v2") := .(min(b), max(b)), a, verbose=TRUE], DT[, c("v1","v2") := .(base::min(b), base::max(b)), a], output="GForce optimized j to")
18679+ test(2233.32, DT[, c("v1","v2") := .(head(b,3L), tail(b,3L)), a], error="head.*:=.*could be implemented ")
1868018680
1868118681# gforce needs to evaluate variable arguments before calling C part (part of test 101.17 in programming.Rraw)
1868218682set.seed(108)
0 commit comments