chance<-c(0.11,0.12,0.13,0.14,0.15)
aaa<-function(x,y) {
  assignChance <- function (a,b,v) {
    if (a == 0)
      if (b == 0) 1-v
      else v
    else
      if (b == 0) 0
      else 1
  }
  sapply(x,assignChance,y,chance) # this is wrong
}
aaa(c(1,1,0,0,1),c(1,1,1,0,0))

我希望结果为:1、1、0.13、0.86、0

有没有更好的方法可以使用此功能。我觉得我目前的尝试非常难看,因为在功能语言中,我只能使用Array.map3 plue pattern match

是否有像switch一样的ifelse矢量版本?

最佳答案

您正在寻找mapply:

 mapply(assignChance,x,y,chance)

通过在代码中使用sapply,您将assignChance函数依次应用于x的每个元素,并且将整个向量bv传递为ychance参数。因此,例如,对于sapply的第一次迭代,结果调用将为:
assignChance(x[1],y,chance)

代替 :
assignChance(x[1],y[1],chance[1])

07-25 22:05