[R] Formatting digits in a table with mix of numbers and characters
arun
smartpink111 at yahoo.com
Thu Nov 8 19:18:22 CET 2012
Hi,
You can also use formatC().
table[]<-ifelse(!is.na(as.numeric(tab1)),formatC(as.numeric(table),format="fg",width=4),table)
#warnings will be present
table
# [,1] [,2] [,3]
#[1,] "12.35" "--" " 10"
#[2,] "12.35" "--" "NA"
#[3,] "--" "123.5" "--"
A.K.
----- Original Message -----
From: David Winsemius <dwinsemius at comcast.net>
To: Brian Hobbs <brhobbs at gmail.com>
Cc: r-help at r-project.org
Sent: Thursday, November 8, 2012 12:40 PM
Subject: Re: [R] Formatting digits in a table with mix of numbers and characters
On Nov 8, 2012, at 8:14 AM, Brian Hobbs wrote:
> Hello,
>
> I am currently trying to find an easy way to take a table with a mix
> of numbers and characters and format the numbers in the table to be
> constrained to 4 significant digits.
>
> Example:
>
> #this is my table creation
>> table <- matrix(c(12.34567, "--", 10, 12.34567, "--", "NA", "--", 123.45678, "--"), ncol = 3, byrow=TRUE)
>>
>> table
> [,1] [,2] [,3]
> [1,] "12.34567" "--" "10"
> [2,] "12.34567" "--" "NA"
> [3,] "--" "123.45678" "--"
>
> #I would like for it to be
> [,1] [,2] [,3]
> [1,] "12.35" "--" "10"
> [2,] "12.35" "--" "NA"
> [3,] "--" "123.5" "--"
Appears from your desired output that your interpretation of "significant digits differs from that of the format function's implementation. (See below)
>
> I am using the "xtable" package and attempt to use the digits()
> argument within xtable; however, this did not format the numbers,
> likely because my table was forced to character values when I created
> it using matrix(). I am not bothered by the character values in my
> final xtable result; however...
>
> I have two questions:
> 1) Is there a better way to create my table so that the original
> numeric values are not forced to characters prior to transfer to
> xtable?
I cannot think of any at the moment.
> 2) Aside from using signif() or round() on each numeric element within
> my matrix as I create the variable "table", is there a way to get my
> numeric elements to have 4 significant figures prior to be manipulated
> by xtable()?
Not sure.
> table <- matrix(c(12.34567, "--", 10, 12.34567, "--", "NA", "--", 123.45678, "--"), ncol = 3, byrow=TRUE)
> table[] <- ifelse(!is.na(as.numeric(table)), format(as.numeric(table),digits=4), table)
Warning messages:
1: In ifelse(!is.na(as.numeric(table)), format(as.numeric(table), digits = 4), :
NAs introduced by coercion
2: In format(as.numeric(table), digits = 4) : NAs introduced by coercion
> table
[,1] [,2] [,3]
[1,] " 12.35" "--" " 10.00"
[2,] " 12.35" "--" "NA"
[3,] "--" "123.46" "--"
--
David.
>
>
>
> Environment: R Studio 0.96.331
> R version: 64-bit 2.15.2
>
>
> Thank you for the help,
> Brian Hobbs
> Pulmonary and Critical Care Fellow
> Harvard Combined Program
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
Alameda, CA, USA
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list