私は、倍精度値と非常に短い文字列からなるベクトルを持っています。私はsprintf
に、n
の数字までの結果を示しています。問題は、使用している間にsprintf
の文字列を使用できない、たとえばsprintf("%.8g", x)
なので、代わりに"%.8s"
を使用しています。混合型と文字列のベクトルをn桁の精度までsprintfする方法はありますか?
そのため、Rが科学的表記法で数値を書いた場合、私は数値の先頭部分のみを印刷しており、結果は意味をなさない。
koza <- c(pi, " > ", 2.01645169344289e-05)
sprintf("%.8s", koza)
私は何を受け取ることである:以下、この動作の簡単な例私は何を受け取りたいのです
[1] "3.141592" " > " "2.016451"
どちらか何かのように:
[1] "3.1415927" " > " "0.0000202"
または
[1] "3.1415927" " > " "2.0164517e-05"
どうすればいいですか?
最初に数値に変換しようとしています。それがnaでない場合は、sprintf関数を使用します。 'unlist(lapply(koza、function(x){ifelse(!is.numeric(x))、sprintf("%.8f "、as.numeric(x))、x)}))' – DJJ
@DJJありがとう!私がしていることをフォーマットするのに最適です。これをカスタム関数として定義し、sprintf()の代わりに使用しました。 – Kusavil