在R中的矩阵中取值的正值部分

时间:2013-05-15 03:28:04

标签: r

我有2个向量zv我希望找到(z-v)_ {+}的值,+表示如果z大于v,则将其等于zv并且否则为零。

      z = c(0.00000000, 0.00000000, 0.05626874, 0.17529181, 0.25865020, 0.27993760,
     0.52217908, 0.85310551, 1.13850492, 2.08570299)
     v= c( 0.00000000, 0.05626874, 0.07096722, 0.17529181, 0.17574861, 0.25865020,
     0.27993760, 0.28331125, 0.34191489, 0.52217908, 0.56703446, 0.67147343,
     0.85310551, 1.00063564, 1.13850492, 1.24488131, 1.36113151, 2.08570299,4.12977829)

我可以创建mat1的矩阵,但我想放(z_ij - v_ij)而不是true,否则等于零。我怎么能在R中这样做?

   mat1 = sapply(1:length(v), function(i) outer(z, v[i], ">"))

1 个答案:

答案 0 :(得分:4)

好的,这只是显示了两个步骤,另一种方法是采取积极的部分:

d <- outer(z,v,"-")
d <- d*(d>0)

哦,第二行的另一个版本(在删除的答案中)是:d[d<0] <- 0