[R] Printing integers in R "as is"

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Apr 14 14:31:35 CEST 2005


Well, you have to convert an integer to character to see it: `as is' is in 
your case 64 0's and 1's.

I very much suspect that you have a double and not an integer:

> 100000
[1] 1e+05
> as.integer(100000)
[1] 100000

so that is one answer: actually use an `integer vector' as you claim.

A second answer is in ?options, see `scipen'.

A third answer is to use sprintf() or formatC() to handle the conversion 
yourself.


On Thu, 14 Apr 2005, Firas Swidan wrote:

> Hi,
> I am using the following command to print to a file (I omitted the file
> details):
>
> cat( paste( paste(orientation, start, end, names,"\n"), paste(start, end,
> "exon\n"), sep=""))
>
> where "orientation" and "names" are character vectors and "start" and
> "end" are integer vectors.
>
> The problem is that R coerce the integer vectors to characters. In
> general, that works fine, but when one of the integer is 100000 (or has
> more 0's) then R prints it as 1e+05. This behavior causes a lot of
> trouble for the program reading R's output.
> This problem occur with paste, cat,
> and print (i.e. paste(100000)="1e+05" and so on).
>
> I tried to change the "digit" option in "options()" but that did not help.
> Is is possible to change the behavior of the coercing or are there any
> work arounds?

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list