2016-11-22 12 views
0

私は.score列の変換を行う必要があるdata.frameのリストを持っています。しかし、私はこの変換のためにヘルパー関数を実装しました。私は.helperFuncをdata.frameの入力リストに呼び出した後、第1、第3のdata.frameに奇妙なpvalueフォーマットがあります。むしろ大きな10進数を単純な科学的数に正規化する方法は?これを簡単に行う方法を教えてもらえますか?Rでかなり長い10進数を正規化する方法は?

おもちゃデータ:私はこの、唯一の二data.frame」フォーマットが必要とされるが起こるかわからない

> .savedDF 
$bar 
    .start .stop .score                 p.value 
1  12 14  5 0.000010000000000000000817488438054070343241619411855936050415039062500 
2  21 29  69 0.000000000000000000000000000000000000000000000000000000000000000000001 
3  37 45  14 0.000000000000009999999999999999990459020882127560980734415352344512939 

$cat 
    .start .stop .score p.value 
1  18 27  15 1e-15 
2  42 46  5 1e-05 
3  18 27  15 1e-15 
4  42 46  5 1e-05 
5  81 114 134 1e-134 

$foo 
    .start .stop .score     p.value 
1  3 26  22 0.0000000000000000000001 
2  3 26  22 0.0000000000000000000001 
3  33 42  6 0.0000010000000000000000 
4  3 26  22 0.0000000000000000000001 
5  33 42  6 0.0000010000000000000000 
6  91 107  7 0.0000001000000000000000 

savedDF <- list(
    bar = data.frame(.start=c(12,21,37), .stop=c(14,29,45), .score=c(5,69,14)), 
    cat = data.frame(.start=c(18,42,18,42,81), .stop=c(27,46,27,46,114), .score=c(15,5,15,5,134)), 
    foo = data.frame(.start=c(3,3,33,3,33,91), .stop=c(26,26,42,26,42,107), .score=c(22,22,6,22,6,7)) 
) 

私はこの奇妙な出力を得ました。 p.value列をできるだけシンプルに正規化するにはどうすればよいですか?

最後の欄catは、希望の形式、またはより正確ではあるが単純な科学的数字も私に合っています。

予期せず長い10進数に対してこの正規化を行うにはどうすればよいですか?希望の出力を得るにはどうすればいいですか?何か案が ?ありがとうございます

+3

データの値を変更しないでください。むしろ、印刷オプションに依存して値を科学表記で表示する必要があります。 'getOption(x =" scipen ")'は何を返しますか? – Gregor

+0

うん、私はあなたの結果のようなRの変更されていないバージョンでは得られません。私はすべての1e - 05 1e - 69などのような素晴らしい科学的価値を得る。 – thelatemail

+0

@ Jerry.Shad - 基本的に、コードを実行して表示している内容を複製することはできません。リストのすべての部分に対して '.savedDF $ cat'のように表示されます。グレゴールが提案したオプションを見てみることをお勧めします。問題の原因となっている設定を編集した可能性が最も高いからです。 – thelatemail

答えて

2

0はデフォルトのscipenです。 (詳細については?optionsを参照してください)あなたは明らかにオプションを100に変更しました。これは科学記法よりも100文字長い場合を除き、Rに10進表記を使用するよう指示します。デフォルトに戻す取得するには、に、ライン

options(scipen = 0) 

を実行する「だから私の関数の中で、私も、このオプションを追加することができます?」 - あなたはそうしてはいけません。 スクリプトで行うのは問題ありませんが、ファンクションにはありません。関数は本当にユーザーオプションを設定すべきではありません。それはあなたがこの混乱に陥った可能性があります - おそらくあなたが使用した機能の一部は、おそらく曖昧にoptions(scipen = 100)を実行し、あなたが気づかないうちにオプションを変更しました。

関連する質問How to disable scientific notation in R?

関連する問題