有人可以解释一下这个错误信息(或者只是一条信息?)。
示例代码和输出(我有verbose=TRUE
,但似乎无关紧要):
定义数据表:
DT <- data.table(a=1:10, b=letters[1:2])
此代码按预期工作:
DT[, a, by=b, verbose=TRUE]
Finding groups (bysameorder=FALSE) ... done in 0secs. bysameorder=FALSE and o__ is length 10
Detected that j uses these columns: a
Optimization is on but j left unchanged as 'a'
Starting dogroups ... done dogroups in 0 secs
b a
1: a 1
2: a 3
3: a 5
4: a 7
5: a 9
6: b 2
7: b 4
8: b 6
9: b 8
10: b 10
这段代码似乎有效,但最终产生了我无法理解的消息:
DT[, cat("\nSome text"), by=b]
Finding groups (bysameorder=FALSE) ... done in 0secs. bysameorder=FALSE and o__ is length 10
Detected that j uses these columns: <none>
Optimization is on but j left unchanged as 'cat("\nSome text")'
Starting dogroups ...
Some text
Some textdone dogroups in 0 secs
Empty data.table (0 rows) of 1 col: b
为什么这个空 data.table (0 rows) of 1 col:消息,它告诉我什么?没有对b
ini
或的引用j
,并且表中的每一行都有一个 for 的值b
。该代码似乎确实符合要求,但我更愿意在应用于我的真实数据集之前了解是否存在问题(这是几千行,因此无法轻松手动验证结果)。
为 DT 设置密钥无济于事。
谷歌的快速检查和这里显示了几个具有相同消息的案例,但它们似乎与这个简单的案例无关(它们都涉及对具有 0 行的空表或 i 和!NA 中的某些东西做一些事情)。
谢谢!
我正在使用来自 r-forge 的 data.table 1.8.9 的最新开发版本(inst/tests/tests.Rraw 中的所有 985 个测试都完成了 ok)。
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] grid stats graphics grDevices utils datasets methods base
other attached packages:
[1] bit64_0.9-2 bit_1.1-10 xts_0.9-5 zoo_1.7-10 nlme_3.1-110 hexbin_1.26.2 lattice_0.20-15 ggplot2_0.9.3.1 reshape_0.8.4 plyr_1.8 foreign_0.8-54
[12] data.table_1.8.9
loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 gtable_0.1.2 labeling_0.2 MASS_7.3-27 munsell_0.4.2 proto_0.3-10 RColorBrewer_1.0-5
[10] reshape2_1.2.2 scales_0.2.3 stringr_0.6.2 tools_3.0.1