【问题标题】:How to generalize mapply to work "crosswisely"?如何概括 mapply 以“交叉”工作?
【发布时间】:2015-05-10 06:56:52
【问题描述】:

Mapply 对每个 m 维向量的第一个元素应用一个二维函数,然后对每个元素的第二个元素应用一个二维函数,以此类推。结果是一个 m 维向量。

例如

> mapply(sum, 1:5, 12:16)
[1] 13 15 17 19 21

现在,是否有直接替代 mapply 的方法,将函数“交叉”应用于第一个向量和第二个向量的每个分量?

结果将是一个 m^2 矩阵。

【问题讨论】:

  • 你是说outer(1:5, 12:16, '+')还是Vectorize(function(x) x+1:5)(12:16)
  • 对于 f(x,y)=x^2+x^y-3 或任何其他二维函数,外部如何工作?
  • 试试f1 <- function(x,y) x^2+x^y-3; outer(1:5, 12:16, f1)
  • 确实!谢谢你。您是否愿意写一个答案或者我们如何关闭它,否则?

标签: r function vectorization apply mapply


【解决方案1】:

你可以试试outer

f1 <- function(x,y) x^2+x^y-3
outer(1:5, 12:16, f1)

类似于

t(Vectorize(function(x) f1(x,12:16))(1:5))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2014-09-07
    • 2021-04-07
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多