Appending % sign in output of prop.table

MYaseen208 picture MYaseen208 · Feb 8, 2012 · Viewed 7.7k times · Source

I'm trying to append % sign in the output of prop.table to use in Sweave. My attempted code is below:

m <- matrix(1:4,2)
dimnames(m) <- list(c("A", "B"), c("C", "D"))
prop.table(m,1)*100

         C        D
A 25.00000 75.00000
B 33.33333 66.66667


paste(round(prop.table(m,1)*100, 3), "%", sep = "")
[1] "25%"     "33.333%" "75%"     "66.667%"


paste(sprintf("%.1f", prop.table(m,1)*100), "%", sep = "")
[1] "25.0%" "33.3%" "75.0%" "66.7%"

Using paste will change the class from matrix to character. I'd highly appreciate if someone guide me the right solution. Thanks

Answer

Marek picture Marek · Feb 8, 2012

Another solution could be replacing content of matrix:

m2 <- m
m2[] <- sprintf("%.1f%%",round(prop.table(m,1)*100, 3))
m2
#   C       D      
# A "25.0%" "75.0%"
# B "33.3%" "66.7%"