2013-01-10 21 views
46

當使用數據(例如,在data.frame)用戶可以控制通過使用如何控制write.table()輸出中的小數位數?

options(digits=3) 

和上市這樣的data.frame顯示數字。

ttf.all 

當用戶需要在對的Excell數據粘貼這樣

write.table(ttf.all, 'clipboard', sep='\t',row.names=F) 

的數字參數被忽略和數字不圓。

見漂亮輸出

> ttf.all 
    year V1.x.x V1.y.x ratio1 V1.x.y V1.y.y ratioR V1.x.x V1.y.x ratioAL V1.x.y V1.y.y ratioRL 
1 2006 227 645 35.2  67 645 10.4 150 645 23.3  53 645 8.22 
2 2007 639 1645 38.8 292 1645 17.8 384 1645 23.3 137 1645 8.33 
3 2008 1531 3150 48.6 982 3150 31.2 755 3150 24.0 235 3150 7.46 
4 2009 1625 3467 46.9 1026 3467 29.6 779 3467 22.5 222 3467 6.40 

但是,什麼是Excel(剪貼板)不被圓。如何控制在write.table()

+10

使用'round()'... – Andrie

+2

如果我理解正確,round()將必須應用於一組列,而且我必須列舉這些。數字= 3是全局的,不需要列枚舉。所以round()不是一個完美的解決方案。 – userJT

回答

45

您可以使用該功能format()爲:

write.table(format(ttf.all, digits=2), 'clipboard', sep='\t',row.names=F) 

format()的是,已經有很多類,包括data.frames方法的通用功能。與round()不同,如果您的數據幀不是全部數字,它不會引發錯誤。有關格式化選項的更多詳細信息,請參閱幫助文件?format

+3

當我使用'digits = 2'和'scientific = F'時,數字設置被忽略。如果我允許科學,它工作正常。有任何想法嗎? – jzadra

+0

親愛的@jzadra,在我的情況下,擁有一個長數字的數據框與較小的數字混合在一起,我使用這些選項以正確地看到R數字,以及正確地將數據保存在csv文件中,正如我在R中看到的那樣:通用R選項:選項(scipen = 1,digits = 8),write.table(格式(data_table,digits = 4,scientific = F)' –

+0

在某些方面,通過在通用R環境中設置十進制數數字將被顯示,它被傳遞到寫入表格命令,結果數字不帶十進制數!因此,您必須相對增加write.table中的小數位。 –