0

我想将表格另存为图形(使用 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"

你知道有什么办法可以规避吗?

4

3 回答 3

2

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

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

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

于 2012-11-16T17:23:49.570 回答
2

其他方式:

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

我同意@joran 的观点,即 R 不适用于排版漂亮的表格。

于 2012-11-16T17:54:46.103 回答
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))
于 2012-11-17T12:12:50.413 回答