2015-04-26 44 views
6

我有我希望是一個關於as.numeric()的簡單問題。我有一大堆數據寫成字符。我希望它們是數字,但as.numeric()會帶走小數點。例如:as.numeric()刪除R中的小數位數,如何更改?

y <- as.character("0.912345678") 
as.numeric(y) 
0.9123457 

謝謝:)

+7

選項(位數= 9) – Khashaa

+2

我確定這是重複的,但我懶得找到合適的問題將其鏈接到現在。 – Dason

+0

@Dason可能這[這裏](http://stackoverflow.com/questions/2287616/controlling-digits-in-r)或[這裏](http://stackoverflow.com/questions/11568385/why-as-數字功能,在-R-犯規,工作正常)?我不確定答案是否相似,所以我沒有提出這個問題。 –

回答

4

R基本上遵循一些基本的概念用於打印所需位數的配置設置。

> options(digits=9) 
> y <- as.character("0.912345678") 
> as.numeric(y) 
[1] 0.912345678 

編輯爲清楚: digits對應的數字號碼中總顯示,而不是數字只是數量的逗號後,您可以用digits選項,如下所示更改此。

例如,

> options(digits=9) 
> y <- as.character("10.123456789") 
> as.numeric(y) 
[1] 10.1234568 

在您的例子前導零的逗號不計前上方,這就是爲什麼9個數字足以顯示完整號碼。

4

這是怎麼回事的是,R爲只顯示一個固定的號碼數字。

This R-help post解釋發生了什麼事。引用Peter Dalgaard, 「對象和對象顯示之間有區別。」

你的榜樣,

y2 = as.numeric(y) 
print(y2) 
# [1] 0.9123457 

但減去0.9,看

y2 - 0.9 
# [1] 0.

更新基於由@Khashaa 評論要更改顯示使用

options(digits = 9) 
y2 
# [1] 0.912345678