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

时间:2013-04-18 10:59:26

标签: 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))

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

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

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

1 个答案:

答案 0 :(得分:6)

您正在寻找mapply

 mapply(assignChance,x,y,chance)

在您的代码中使用sapply,您依次将assignChance函数应用于x的每个元素,并且您将传递为b和{{1你的整个向量vy参数。因此,例如,对于chance的第一次迭代,结果调用将是:

sapply

而不是:

assignChance(x[1],y,chance)