# using scientific notation in R

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?

## Answers

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