将%符号添加到r中表中的数据

时间:2012-11-16 17:13:01

标签: r

我想将表格保存为图形(使用gridExtra包中的“tableGrob”)。这没有任何问题。

但在此之前,我需要在表格的所有值中添加“%”符号。但是,将符号粘贴到表会将表转换为矢量。

my.table <- table(diamonds$cut, diamonds$color)

str(my.table)
'table' int [1:5, 1:7] 163 662 1513 1603 2834 224 933 2400 2337 3903 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:5] "Fair" "Good" "Very Good" "Premium" ...
..$ : chr [1:7] "D" "E" "F" "G" ...

my.table <- format(100*my.table, 2)

          D        E        F        G        H        I        J      
Fair      "16300"  "22400"  "31200"  "31400"  "30300"  "17500"  "11900"
Good      "66200"  "93300"  "90900"  "87100"  "70200"  "52200"  "30700"
Very Good "151300" "240000" "216400" "229900" "182400" "120400" "67800"
Premium   "160300" "233700" "233100" "292400" "236000" "142800" "80800"
Ideal     "283400" "390300" "382600" "488400" "311500" "209300" "89600"

还可以,但下一个命令会破坏表格:

my.table <- paste(my.table, '%')
str(my.table)
"character"

你知道如何绕过这个吗?

3 个答案:

答案 0 :(得分:2)

您可以做的一件事就是重建表格:

m <- paste(my.table, '%')
matrix(m,5,7,dimnames = dimnames(my.table))

但是,如果看起来很可能,这个表将在LaTeX(或类似的东西)中输出,那么在将它转换为您正在使用的任何标记语言时添加%符号可能更有意义,而是在R的数据结构中。

答案 1 :(得分:2)

另一种方式:

replace(my.table, TRUE, sprintf('%d%%', my.table))

我同意@joran,R不是用于排版漂亮的表格。

答案 2 :(得分:0)

您可以复制属性以恢复表格形式:

my.table2 <- paste(my.table, '%')
attributes(my.table2) <- attributes(my.table)
my.table <- my.table2

如果你想避免额外的名字,下面的代码会这样做,虽然它更难阅读:

my.table <- `attributes<-`(paste(my.table, '%'), attributes(my.table))