应用具有不同的参数值
问题描述:
我想做适用于矩阵应用具有不同的参数值
val=c(1,2,3,4,5,6)
cpm <- apply(mat,2,function(x) (x/val[x])*1000000)
我需要使用其中包含6个值VAL矩阵,同列号,我应该使用VAL矩阵的每个数字为每列。
我该如何处理?
答
假设你矩阵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
这是我不太清楚什么'val'包含或者你想要什么输出。 –
它不清楚你想要什么,但'mapply'可能有帮助(如果你实际上有一个data.frame而不是矩阵 –