2017-04-23 55 views
0

我想做適用於矩陣應用具有不同的參數值

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

我需要使用其中包含6個值VAL矩陣,同列號,我應該使用VAL矩陣的每個數字爲每列。

我該如何處理?

+2

這是我不太清楚什麼'val'包含或者你想要什麼輸出。 –

+1

它不清楚你想要什麼,但'mapply'可能有幫助(如果你實際上有一個data.frame而不是矩陣 –

回答

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 
相關問題