应用不同的参数值

时间:2017-04-23 12:48:18

标签: r rstudio

我想申请矩阵

val=c(1,2,3,4,5,6)
cpm <- apply(mat,2,function(x) (x/val[x])*1000000)

我需要使用包含6个值的val矩阵,与列号相同,我应该为每列使用每个val矩阵数。

我该如何处理?

1 个答案:

答案 0 :(得分:1)

假设矩阵mat是:

mat <- matrix(1:30,ncol=6)

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    6   11   16   21   26
[2,]    2    7   12   17   22   27
[3,]    3    8   13   18   23   28
[4,]    4    9   14   19   24   29
[5,]    5   10   15   20   25   30

val=c(1,2,3,4,5,6)

您的问题的解决方案是:

cpm <- lapply(1:ncol(mat), 
   function(k, mtx, vec) (mtx[,k]/vec[k])*1000000, mtx=mat, vec=val)

matrix(unlist(cpm),ncol=ncol(mat))

      [,1]    [,2]    [,3]    [,4]    [,5]    [,6]
[1,] 1e+06 3000000 3666667 4000000 4200000 4333333
[2,] 2e+06 3500000 4000000 4250000 4400000 4500000
[3,] 3e+06 4000000 4333333 4500000 4600000 4666667
[4,] 4e+06 4500000 4666667 4750000 4800000 4833333
[5,] 5e+06 5000000 5000000 5000000 5000000 5000000