2012-05-30 50 views
7

I 不要想要在我的R會話中查看任何計算結果中的任何科學記數法。我希望看到所有實際的數字,最好在每三位數後用逗號(,)。完整刪除整個R會話的科學記數法

我該怎麼做? options(scipen = 999)不會削減它。

+1

出於病態的好奇心,爲什麼呢?雙精度只能精確到〜16位,所以之後的所有內容都是四捨五入的。 –

+1

會計用法 – JoeJoe

+2

您是否理解控制檯中顯示的內容與正在寫入文件或其他連接的內容之間的區別? –

回答

10

print.default函數在「決定」分配什麼寬度時會查看options()['digits']值,所以您可能需要增加以及嘗試最大化「scipen」。對於該寬度,操作系統特定問題的值高於16。至於逗號請求,...忘記它。 R不是一個財務報告系統。如果你需要強制這種輸出格式,你可以定義對象爲特定的類,並使用sprintf和formatC爲它們編寫打印方法,或者我想你可以重寫print.default,但這可能只會影響不是打印操作傳遞給print的其他100多種方法之一。

有輸出方法。 formatC()prettyNum()都有一個'big.mark'參數,它會將逗號插入數字中。輸出格式爲"character"格式,因此而不是嘗試對您創建的結果進行任何進一步計算。

也有可能讀取包含逗號或貨幣符號數列輸入法:

setAs("character", "num.with.commas", function(from) as.numeric(gsub(",", "", from))) 
setAs("character", "euro", 
function(from) as.numeric(gsub("€", "", from))) 
setAs("character", "num_pct", 
function(from) as.numeric(gsub("%", "", from))/100) 
# you will get warning messages if you have not defined the class, 
#  .... but this will still succeed 

Input <- "A B C 
1,000 1% 3.50€ 
2,000 2% 4.77€ 
3,000 3% €5.68 
" 
DF <- read.table(textConnection(Input), header = TRUE, 
       colClasses = c("num.with.commas", "num_pct", "euro")) 
str(DF)