如何在不改变R中格式的情况下将矩阵值转换为百分比

如何在不改变R中格式的情况下将矩阵值转换为百分比,r,matrix,percentage,R,Matrix,Percentage,我有一个矩阵,它是res > res [,1] [,2] [,3] [,4] [,5] [1,] 0.025431667 0.024636307 0.02812685 0.02733088 0.02807624 [2,] -0.005383589 0.000000000 0.02807624 0.02258878 0.02322090 [3,

我有一个矩阵,它是
res

 > res
                     [,1]         [,2]       [,3]       [,4]       [,5]
        [1,]  0.025431667  0.024636307 0.02812685 0.02733088 0.02807624
        [2,] -0.005383589  0.000000000 0.02807624 0.02258878 0.02322090
        [3,] -0.002674251 -0.002674251 0.05502400 0.00000000 0.01385476
        [4,]  0.055024000  0.061028259 0.05932779 0.05956794 0.05839394
        [5,]  0.059327790  0.059567938 0.05839394 0.06048811 0.05944368
我希望将结果作为百分比,并保持数据结构不变

当我从
scales
尝试像
percent(res)
这样的方法时,我得到的是一个向量而不是一个矩阵

> percent(res)
 [1] "2.54%"  "-0.54%" "-0.27%" "5.50%"  "5.93%"  "2.46%"  "0.00%"  "-0.27%"
 [9] "6.10%"  "5.96%"  "2.81%"  "2.81%"  "5.50%"  "5.93%"  "5.84%"  "2.73%"
[17] "2.26%"  "0.00%"  "5.96%"  "6.05%"  "2.81%"  "2.32%"  "1.39%"  "5.84%"
[25] "5.94%"

有什么建议吗?

formmattable软件包的功能百分比与matrix配合良好:

library(formattable)
    percent(res)
这就是结果:

     X..1.  X..2.  X..3. X..4. X..5.
[1,] 2.54%  2.46%  2.81% 2.73% 2.81%
[2,] -0.54% 0.00%  2.81% 2.26% 2.32%
[3,] -0.27% -0.27% 5.50% 0.00% 1.39%
[4,] 5.50%  6.10%  5.93% 5.96% 5.84%
[5,] 5.93%  5.96%  5.84% 6.05% 5.94%
你可以做:

require(scales)
set.seed(1) # Just for reproducibility 
res <- matrix(data = rnorm(20), nrow = 5, ncol = 4)

 > res
           [,1]       [,2]       [,3]        [,4]
[1,] -0.6264538 -0.8204684  1.5117812 -0.04493361
[2,]  0.1836433  0.4874291  0.3898432 -0.01619026
[3,] -0.8356286  0.7383247 -0.6212406  0.94383621
[4,]  1.5952808  0.5757814 -2.2146999  0.82122120
[5,]  0.3295078 -0.3053884  1.1249309  0.59390132

res[] <- percent(res)

> res
     [,1]   [,2]   [,3]    [,4] 
[1,] "-63%" "-82%" "151%"  "-4%"
[2,] "18%"  "49%"  "39%"   "-2%"
[3,] "-84%" "74%"  "-62%"  "94%"
[4,] "160%" "58%"  "-221%" "82%"
[5,] "33%"  "-31%" "112%"  "59%"
require(比例)
设定种子(1)#仅用于再现性
res res
[,1]       [,2]       [,3]        [,4]
[1,] -0.6264538 -0.8204684  1.5117812 -0.04493361
[2,]  0.1836433  0.4874291  0.3898432 -0.01619026
[3,] -0.8356286  0.7383247 -0.6212406  0.94383621
[4,]  1.5952808  0.5757814 -2.2146999  0.82122120
[5,]  0.3295078 -0.3053884  1.1249309  0.59390132
res[]res
[,1]   [,2]   [,3]    [,4] 
[1,] "-63%" "-82%" "151%"  "-4%"
[2,] "18%"  "49%"  "39%"   "-2%"
[3,] "-84%" "74%"  "-62%"  "94%"
[4,] "160%" "58%"  "-221%" "82%"
[5,] "33%"  "-31%" "112%"  "59%"
以及:

require(scales)
mat <- matrix(rexp(200, rate=.1), ncol=5, nrow=5)
> mat
           [,1]     [,2]      [,3]       [,4]      [,5]
[1,]  0.8633327  0.59608  4.255264  4.9075876 14.690223
[2,] 13.3531120 33.97510  9.292887  9.2030803  8.963202
[3,] 10.9540116 13.00999  3.345536 12.0012241 16.985236
[4,]  8.7139062 40.25450 22.578629  0.7283414  1.389453
[5,] 15.0364007 11.74895  8.764188 13.8024305  9.303271
> res <- apply(mat, 2, function(x) percent(x/100))
> res
     [,1]    [,2]    [,3]    [,4]    [,5]   
[1,] "0.9%"  "0.6%"  "4.3%"  "4.9%"  "14.7%"
[2,] "13.4%" "34.0%" "9.3%"  "9.2%"  "9.0%" 
[3,] "11.0%" "13.0%" "3.3%"  "12.0%" "17.0%"
[4,] "8.7%"  "40.3%" "22.6%" "0.7%"  "1.4%" 
[5,] "15.0%" "11.7%" "8.8%"  "13.8%" "9.3%"
> res <- apply(mat, 2, function(x) percent(x)) #or without '/100' if you want 9% instead of 0.9%
require(比例)
垫子
[,1]     [,2]      [,3]       [,4]      [,5]
[1,]  0.8633327  0.59608  4.255264  4.9075876 14.690223
[2,] 13.3531120 33.97510  9.292887  9.2030803  8.963202
[3,] 10.9540116 13.00999  3.345536 12.0012241 16.985236
[4,]  8.7139062 40.25450 22.578629  0.7283414  1.389453
[5,] 15.0364007 11.74895  8.764188 13.8024305  9.303271
>res res
[,1]    [,2]    [,3]    [,4]    [,5]   
[1,] "0.9%"  "0.6%"  "4.3%"  "4.9%"  "14.7%"
[2,] "13.4%" "34.0%" "9.3%"  "9.2%"  "9.0%" 
[3,] "11.0%" "13.0%" "3.3%"  "12.0%" "17.0%"
[4,] "8.7%"  "40.3%" "22.6%" "0.7%"  "1.4%" 
[5,] "15.0%" "11.7%" "8.8%"  "13.8%" "9.3%"

>res可能会对每一列单独使用
percent()
,如果应用,它应该会成功。percent
来自哪里?这不是基尔