Formatting digits in a table with mix of numbers and characters
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.