10

I'm currently using printCoefmat to print a matrix out and want to apply some formatting to the numbers.

I want to force scientific notation when the numbers have an exponent greater than 3. I can't quite figure out how scipen works, Does anyone have any idea how I can do this?

Phyx
  • 2,697
  • 1
  • 20
  • 35

1 Answers1

15

Just type in a big number to get R to display unscientific notation.

options( scipen = 20 )

If that's not enough, make the number bigger...

How does the scipen penalty work?

It is confusing, but the penalty is applied to the scientific notation version, as in R looks at how many characters it takes to print a particular string. It adds the value scipen penalty to the number of characters in scientific notation and if it is still less than the number of characters required to print the actual number then it will print scientific and vice versa. I hope this example will illustrate the point:

options( scipen = 0 )
options( digits = 6 )
>1e5
#[1] 1e+05    ----> 5 characters in scientific, vs. 6 for '100000' in normal
>1e4
#[1] 10000    ----> 5 characters in normal, vs. 5 for '1e+04' in scientific
options(scipen = 1 )
>1e5
#[1] 100000    ----> 6 characters in normal, vs. 5 + 1 for '1e+05' + scipen penalty in scientific
Simon O'Hanlon
  • 58,647
  • 14
  • 142
  • 184
  • Isn't it the other way around? the documentation states "integer. A penalty to be applied when deciding to print numeric values in fixed or exponential notation. Positive values bias towards fixed and negative towards scientific notation: fixed notation will be preferred unless it is more than scipen digits wider." – Phyx May 03 '13 at 10:38
  • but I've know about this option, just don't quite know how to use it. There's a penalty, but a penalty to what? where's the cut-off value that it decides what to do? – Phyx May 03 '13 at 10:40
  • @Phyx I've added an explanation. Heopfully this clears it up for you. – Simon O'Hanlon May 03 '13 at 10:52