2016-06-02 20 views
3

私はRベクトルa = c(.45652356112, .0000063983562)を持っています。そして、私はこのベクトルの数字をフォーマットして、結果のベクトルがc(.46, 6.4e-06)になるようにしたいと思います。私がするときRの数字書式設定

format(a, digits=2, nsmall=2) 

結果はc(4.6e-01, 6.4e-06)です。どうやら、それぞれの要素を別々の関数format()に渡して、望む結果を得るべきです。しかし、元のaの長さが50000なので、各要素のformat()を呼び出すforループは遅すぎます。どのようにしてループなしで目的のフォーマットを取得できますか?

答えて

5

あなたは

ifelse(a < 0.001, format(a, digits = 2, nsmall = 2), round(a, 2)) 
# [1] "0.46" "6.4e-06" 
+0

はそんなにありがとうifelse条件内のフォーマットを置くことができます!私は 'ifelse'機能を知らなかった。 – user5054

+1

@ user5054ようこそ。これは便利なベクトル化された 'if(...){...} else {...}'の実装です – SymbolixAU