带有数字列的R data.table setkey

时间:2012-08-07 21:35:14

标签: r data.table

我正在使用R中的data.table包。当尝试在数字列上使用setkey时,我收到以下错误消息:

setkey(candidate.SNPs.MAF, p)

Error in setkeyv(x, cols, verbose = verbose) :
Column 'p' cannot be coerced to integer without losing fractional data.

我见过最近的 answer表明我需要至少拥有v1.8.1并确认在使用最新版本(1.8.2)时会出现此问题

help(package="data.table")
               Information on package 'data.table'

Description:
Package:            data.table
Version:            1.8.2

有什么建议吗?我宁愿不必恢复到data.frames。

我的数据结构如下:

str(can_SNPs_context)
Classes 'data.table' and 'data.frame':  1031 obs. of  23 variables:
$ Trait            : chr  "GH2_SLA" "GH2_SLA" "GH2_SLA" "GH2_SLA" ...
$ Locus            : chr  "1" "1" "1" "1" ...
$ Marker           : int  1825530 1844004 2251065 2444826 2832616 3557976 4299 650 4606939 4610965 6057450 ...
$ p                : num  8.68e-08 7.21e-08 1.11e-07 1.20e-08 8.17e-08 ...

p列是我试图设置的关键 - 非常小的值会导致问题吗?

R版本2.15.1 Linux x86_64

谢谢!

1 个答案:

答案 0 :(得分:0)

Andrie和mnel,我也无法复制。

测试data.table类型的安装:

test.data.table()

在我的上网本上,这将返回:

[.. snip ..]
All 717 tests in test.data.table() completed ok in 50.040sec

如果它准确地返回 717 那么你就是好的。对于1.8.2的NEWS的NOTES部分,您会发现1.8.2有717个测试。

是否有可能升级到1.8.2但是没有重新加载软件包,或者当你升级一个但没有重新加载其他R会话时运行了多个R会话? helppackageVersion等报告磁盘上的软件包版本,而不是加载到内存中的版本,afaik。当data.table加载时,它是启动横幅,告诉您版本正在运行。

我不知道R是否存储了加载到内存中的软件包的版本。如果没有,那么建议r-devel是好的,并且更改packageVersionhep(package=)以检查内存中的版本(如果已加载)与磁盘上的版本匹配。