Skip to content

write.table -- maintain decimal places

8 messages · Sébastien Bihorel, Peter Ehlers, Jim Moon

#
On Tue, 25 Jan 2011 16:16:37 -0800,
Jim Moon <moonja at ohsu.edu> wrote:

            
Have a look at ?format.data.frame
#
On 2011-01-25 16:16, Jim Moon wrote:
write.table(format(df, drop0trailing=FALSE), ....)

Peter Ehlers
#
Thank you for the response, Peter.  

The approach:
write.table(format(df, drop0trailing=FALSE),file='df.txt',quote=F,sep='\t',row.names=F)
surprisingly still results in some loss of trailing 0's.

df:
   EFFECT2  PVALUE
1 0.023    0.88080
2 -0.260  0.08641
3 -0.114  0.45200

df.txt:
EFFECT2    PVALUE
0.023      8.808e-01
-0.26      8.641e-02
-0.114     4.520e-01


-----Original Message-----
From: Peter Ehlers [mailto:ehlers at ucalgary.ca] 
Sent: Tuesday, January 25, 2011 5:09 PM
To: Jim Moon
Cc: r-help at r-project.org
Subject: Re: [R] write.table -- maintain decimal places
On 2011-01-25 16:16, Jim Moon wrote:
write.table(format(df, drop0trailing=FALSE), ....)

Peter Ehlers
#
On 2011-01-25 17:22, Jim Moon wrote:
What version of R?
I'm using R version 2.12.1 Patched (2010-12-27 r53883)
and it works for me.

Peter Ehlers
#
On 2011-01-25 17:22, Jim Moon wrote:
Here are a couple more (essentially identical) ways:

# 1.
  dfm <- within(df, {
                    EFFECT2 <- sprintf("%6.3f", EFFECT2)
                    PVALUE  <- sprintf("%7.5f", PVALUE)
                    })

# 2.
  dfm <- within(df, {
       EFFECT2 <- formatC(EFFECT2, format="f", digits=3)
       PVALUE  <- formatC(PVALUE,  format="f", digits=5)
       })

write.table(dfm, file='dfm.txt', quote=FALSE, sep='\t', row.names=FALSE)

Peter Ehlers
#
I am using:
"R version 2.11.1 (2010-05-31)"
It is good to know that it works in 2.12.1

Jim

-----Original Message-----
From: Peter Ehlers [mailto:ehlers at ucalgary.ca] 
Sent: Tuesday, January 25, 2011 5:57 PM
To: Jim Moon
Cc: r-help at r-project.org
Subject: Re: [R] write.table -- maintain decimal places
On 2011-01-25 17:22, Jim Moon wrote:
What version of R?
I'm using R version 2.12.1 Patched (2010-12-27 r53883)
and it works for me.

Peter Ehlers
#
Great.  Thank you, Peter!

-----Original Message-----
From: Peter Ehlers [mailto:ehlers at ucalgary.ca] 
Sent: Tuesday, January 25, 2011 7:26 PM
To: Jim Moon
Cc: r-help at r-project.org
Subject: Re: [R] write.table -- maintain decimal places
On 2011-01-25 17:22, Jim Moon wrote:
Here are a couple more (essentially identical) ways:

# 1.
  dfm <- within(df, {
                    EFFECT2 <- sprintf("%6.3f", EFFECT2)
                    PVALUE  <- sprintf("%7.5f", PVALUE)
                    })

# 2.
  dfm <- within(df, {
       EFFECT2 <- formatC(EFFECT2, format="f", digits=3)
       PVALUE  <- formatC(PVALUE,  format="f", digits=5)
       })

write.table(dfm, file='dfm.txt', quote=FALSE, sep='\t', row.names=FALSE)

Peter Ehlers