2017-06-09 61 views
1

默認情況下,print method似乎將帶有額外0的打印數字填充到小數點右側,以便所有數字都以相同的小數位數顯示,這等於最大小數位數。在r中打印時,是否可以用0填充數字?

例如

a <- c(5, 3.25, 7.9999) 
b <- c(5.1, 3.2, 8.3) 
data.frame(a, b) 

產生

 a b 
1 5.0000 5.1 
2 3.2500 3.2 
3 7.9999 8.3 

我知道我可以使用options改變的最大位數,但將只是改變加0的個數。我不想將它們改爲人物,因爲我希望能夠在事後處理數字。我只是想打印值,因爲它們實際上存儲在數據框(或其他)對象中。

有沒有辦法做到這一點?

注意:這與詢問如何通常或動態設置固定位數不同。提出的重複問題解決了這個問題。

回答

1

而是創建一個vector,我們可以將其存儲在list,並且將保留的數字作爲原

list(5, 3.25, 7.9999) 
#[[1]] 
#[1] 5 

#[[2]] 
#[1] 3.25 

#[[3]] 
#[1] 7.9999 

如果我們真的需要一個data.frame

data.frame(a = I(list(5, 3.25, 7.9999)), b = I(list(5.1, 3.2, 8.3))) 
#  a b 
#1  5 5.1 
#2 3.25 3.2 
#3 7.9999 8.3 
+1

很好做@akrun! – Elin

+0

嗯。我不相信該數據框的元素仍然是數字。可能需要使用double [[]]來獲取數字行爲。 – user20637

+0

@ user20637它是'data.frame'中的列表列。如果我們檢查'str',即'str(data.frame(a = I(list(5,3.25,7.9999)),b = I(list(5.1,3.2,8.3))))# 'data.frame ':3 obs。 2變量: $ a:3 .. $:num 5 .. $:num 3.25 .. $:num 8' – akrun

相關問題