2012-05-30 61 views
2

我在將數據結構轉換爲JSON時未遇到以科學計數法表示數值的問題。轉換爲JSON時禁用科學記數法

library(rjson) 

options(scipen=1000) 

toJSON(c(1200000000, 400000)) 

# [1] "[1.2e+08,400000]" 

如何使其輸出"[1200000000,400000]"

+0

我無法重現此行爲。你使用R或rjson的舊版本嗎? – joran

+0

R 2.15.0和rjson 0.2.8我的輸出與WYi相匹配。 – Justin

+0

[如何禁用R中的科學記數法]的可能的重複(https://stackoverflow.com/questions/5352099/how-to-disable-scientific-notation-in-r) – amonk

回答

2

我還建議在傳遞到toJSON之前將數字轉換爲字符串,就像上面寫的@gauden一樣。但是,如果你不會做嘗試RJSONIO包(這是更快反正)具有digits選項:

> toJSON(c(1200000000, 400000), digits = 10) 
[1] "[ 1200000000,  400000 ]" 

但是,這將導致一些額外的空格,你可以看到。


更新:似乎@gauden刪除他的回答所以增加了一些細節

你可以稱呼例如format在將「數字」轉換爲JSON之前,例如:

> toJSON(format(c(1200000000, 400000), scientific = FALSE, trim = TRUE)) 
[1] "[\"1200000000\",\"400000\"]" 
+0

Thanks @daroczig。但我有一個更大的對象來轉換爲JSON,所以手動格式化每個數字在我的情況下是不可擴展的。 – WYi

+0

你仍然可以在'digits'參數中使用'RJSONIO :: toJSON',但我真的不確定爲什麼在一個大對象上運行'format'(矢量化)是一個壞主意。例如:格式(mtcars,decimal.mark =',')' – daroczig