【问题标题】:using mapply on a function with multiple arguments not giving expected result在具有多个参数的函数上使用 mapply 未给出预期结果
【发布时间】:2023-03-30 04:19:02
【问题描述】:

我想使用 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

【问题讨论】:

    标签: r sapply


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 1970-01-01
      • 2019-12-28
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      相关资源
      最近更新 更多