2012-08-07 19 views
1

我使用data.table包在R.當試圖在數值列使用setkey的,我發現了以下錯誤消息:ř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的

謝謝!

+2

我無法在我的機器上覆制此錯誤。你能放置一部分複製問題的數據嗎? – mnel 2012-08-07 23:08:20

+1

我也無法複製。 – Andrie 2012-08-08 05:47:52

回答

0

由於Andrie和mnel,我也無法複製。

要測試安裝data.table類型:

test.data.table() 

在我的上網本這個返回:

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

如果返回精確那麼你是好的。對於1.8.2,NEWS的NOTES部分是您發現1.8.2有717個測試的地方。

是否有可能將您升級到1.8.2,但沒有重新加載軟件包,或者有多個R會話在您升級到一個時運行,但沒有在其他軟件中重新加載? help,packageVersion等報告磁盤上的軟件包的版本,而不是加載到內存中的版本afaik。這是data.table加載時的啓動橫幅,它告訴您運行的版本。

我不知道R是否存儲了加載到內存中的軟件包版本。如果沒有,那麼建議r-devel,並且更改packageVersionhep(package=)以檢查內存中的版本(如果加載的話)與磁盤上的版本匹配。

+1

今天開始新鮮,一切正常!我重新加載了軟件包,但也打開了多個R會話,所以我猜測這是問題所在。很高興這是相對容易解決...感謝和抱歉,我沒有等待一天前發佈。 – JohnSG 2012-08-08 20:13:16