0

我有 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], ">"))
4

1 回答 1

5

好的,这仅显示了这两个步骤,并以另一种方式采取了积极的态度:

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

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

于 2013-05-15T03:49:56.110 回答