R data.table select行(i)必须使用括号?[数据表中
为什么这两个data.table命令的结果不同 DT[num==1,.N]返回错误的结果 和 DT[num==1,.N]返回正确的结果 num是data.DT表中的数字列 编辑:sessionInfoR data.table select行(i)必须使用括号?[数据表中,r,data.table,R,Data.table,为什么这两个data.table命令的结果不同 DT[num==1,.N]返回错误的结果 和 DT[num==1,.N]返回正确的结果 num是data.DT表中的数字列 编辑:sessionInfo R version 3.1.2 (2014-10-31) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_C
R version 3.1.2 (2014-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=C
[5] LC_MONETARY=C LC_MESSAGES=C LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.9.4
通过命名空间加载但未附加:
[1] Rcpp_0.11.4 chron_2.3-45 plyr_1.8.1 Reforme2_1.4.1 stringr_0.6.2 tools_3.1.2@Arun是对的,这似乎是data.table版本1.9.4中的一个缺陷,该版本目前是CRAN中最新的稳定版本 github更新到1.9.5后,它可以正常工作:
> DT[num == 1, .N]
[1] 2643421
> DT[(num == 1), .N]
[1] 2643421
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=C
[5] LC_MONETARY=C LC_MESSAGES=C LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.9.5
loaded via a namespace (and not attached):
[1] chron_2.3-45 tools_3.1.2
获得与数据相同的结果。表1.9.5最好提供一个可重复的示例。第24组;DT很可能是1.9.4版本中的一个自动索引新特性,该缺陷来自1.9.4版本。执行选项DataTable.auto.index=FALSE或直到1.9.6被推送到CRAN。包含您的sessionInfo或至少data.table版本非常有用,因为您需要运行和@Arun!我已经编辑了会话信息。我好像在1.9.4。