在具有多个参数的函数上使用mapply而不给出预期的结果

时间:2015-04-11 21:40:40

标签: r sapply

我想使用sapply或mapply来执行下面的函数,而不是3:5和9:10的数字。总之,我想做以下

3^2 + 9 = 18
4^2 + 9 = 25
5^2 + 9 = 34

3^2 + 10 = 19
4^2 + 10 = 26
5^2 + 10 = 35

但是,我想指定两个值,即3:5和9:10作为参数。当函数只需要一个参数时,我能够使用sapply,当函数需要两个参数时,我也能够使用mapply,其中第二个参数不是元素列表。如何使用两个参数执行相同的操作,这两个参数都是列表?

 > mapply(myfunc,3:5,9)
[1] 18 25 34
> mapply(myfunc,3:5,9:10)
[1] 18 26 34
Warning message:
In mapply(myfunc, 3:5, 9:10) :
  longer argument not a multiple of length of shorter

1 个答案:

答案 0 :(得分:1)

对于您的示例,您可以使用函数outer

> outer(3:5, 9:10, function(x, y) { x^2 + y })
     [,1] [,2]
[1,]   18   19
[2,]   25   26
[3,]   34   35

但请注意,应用的函数必须进行矢量化。