因此,我想在R中的一个矩阵上应用一个函数。apply函数采用一个自定义函数,该函数带有两个参数:一个矩阵元素和该元素所属行的总和。下面是可复制的代码
m = (matrix(1:10, nrow=2))
## Custom Function
IC = function(element, sum_rows){
value = -log(element/sum_rows,2)
return(value)
}
我想知道是否有任何方法可以将rowSums作为参数传递给如下所示的函数
apply(m,1:2,IC,sum_rows = rowSums)
当应用逐个元素(带有MARGIN = 1:2
)时,该rowSums
函数将不起作用,因为没有行。每个元素都是一个原子向量。
幸运的是,该操作可以完全矢量化,并且log2
可以用于二进制(以2为底)对数。
-log2(m / rowSums(m))
# [,1] [,2] [,3] [,4] [,5]
# [1,] 4.643856 3.058894 2.321928 1.836501 1.473931
# [2,] 3.906891 2.906891 2.321928 1.906891 1.584963
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句