如何应用一个带有多个参数的函数,这两个参数都是向量?

col*_*ang 2 r

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))
Run Code Online (Sandbox Code Playgroud)

我期望结果为:1,1,0.13,0.86,0

有没有更好的方法来实现这个功能.我觉得我现在学尝试是在功能性语言,我可以只使用相当难看Array.map3plue pattern match.

有没有的向量版本switch只是喜欢ifelse

jub*_*uba 6

您正在寻找mapply:

 mapply(assignChance,x,y,chance)
Run Code Online (Sandbox Code Playgroud)

通过使用sapply在你的代码,你申请的assignChance函数的每个元素x在转,你逝去的是bv论证你的整个向量ychance.因此,例如,对于您的第一次迭代sapply,结果调用将是:

assignChance(x[1],y,chance)
Run Code Online (Sandbox Code Playgroud)

代替 :

assignChance(x[1],y[1],chance[1])
Run Code Online (Sandbox Code Playgroud)