我有2个向量z
,v
我希望找到(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], ">"))
答案 0 :(得分:4)
好的,这只是显示了两个步骤,另一种方法是采取积极的部分:
d <- outer(z,v,"-")
d <- d*(d>0)
哦,第二行的另一个版本(在删除的答案中)是:d[d<0] <- 0
。