2012-07-19 60 views
0

我有這兩個字符和「as.numeric」功能對他們不起作用。任何人都可以幫助我爲什麼會發生這種情況?爲什麼R中的as.numeric函數無法正常工作?

選項(位數= 22)

一個= 「27」

as.numeric的(a)

[1] 27.00000000000000000000

一個=」 193381411288395777「

as。數字的(a)

[1] 193381411288395776.0000

它可以看出,在第二種情況下,最後的數字是不是 「7」,它是 「6」。基本上,「as.numeric」函數從第二種情況下的數字減少1個單位。

任何幫助表示讚賞。

回答

2

您需要了解確切數字的表示限制。 R可以告訴你它具有:

R> .Machine 
$double.eps 
[1] 2.22045e-16 

$double.neg.eps 
[1] 1.11022e-16 

$double.xmin 
[1] 2.22507e-308 

$double.xmax 
[1] 1.79769e+308 

$double.base 
[1] 2 

$double.digits 
[1] 53 

$double.rounding 
[1] 5 

$double.guard 
[1] 0 

$double.ulp.digits 
[1] -52 

$double.neg.ulp.digits 
[1] -53 

$double.exponent 
[1] 11 

$double.min.exp 
[1] -1022 

$double.max.exp 
[1] 1024 

$integer.max 
[1] 2147483647 

$sizeof.long 
[1] 8 

$sizeof.longlong 
[1] 8 

$sizeof.longdouble 
[1] 16 

$sizeof.pointer 
[1] 8 

R> 
+0

有幾個包,這將讓你做你想要的。 int64,gmp,...,我知道還有其他人,但那些是我知道的我頭上的那些人。 – Dason 2012-07-19 20:07:23

2

使用int64包:

library(int64) 
> as.int64("193381411288395777") 
[1] 193381411288395777 
+2

int64包允許您顯示這些數字,但由於該數字存儲爲大小爲2的列表,因此無法對它們進行太多分析。我會說你最好使用數字,並在精度上打擊。取決於你需要做的事情! – 2012-07-19 20:17:44

+0

謝謝,但我需要得到這個數字,因爲數字。因爲它是另一個函數的輸入,我需要整個數字。 – user1538982 2012-07-20 04:02:44

相關問題