2017-06-09 63 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

相关问题