【问题标题】:Create matrix with elements returned by a function使用函数返回的元素创建矩阵
【发布时间】:2013-05-12 15:24:42
【问题描述】:

我有两个带有一些值的向量 x 和 y,我需要生成矩阵,这些元素将由应用于这 2 个向量的函数 f(x,y) 返回。也就是说矩阵M会有一个典型元素

M[i,j] <- f(x[i], y[j])

如果我想避免循环,最有效的方法是什么?我可以使用 sapply 函数生成矩阵列或行,即

M[i, ] <- sapply(y, f, x = x[i])

但是我仍然需要在非常慢的其他维度上应用循环,因为 x 的维度很大。是否可以使用 apply 系列函数并完全避免循环?

【问题讨论】:

  • f 可以矢量化吗?
  • 如果f 被矢量化outer(x,y,"f"),否则outer(x,y,FUN=Vectorize(f))

标签: r


【解决方案1】:

这正是outer 函数的作用:

outer(x, y, f)

如果f没有向量化,你需要:

outer(x, y, Vectorize(f))

【讨论】:

  • 谢谢。如果函数 f 有 3 个参数 f(x,y,z) 但我们只需要使用前 2 个参数并让 z = 1 怎么办?
  • 只需添加第三个参数:outer( x, y, f, z=1 )
猜你喜欢
  • 2020-04-01
  • 1970-01-01
  • 2021-05-11
  • 2020-02-14
  • 1970-01-01
  • 2023-03-25
  • 2012-09-29
  • 2016-01-31
  • 1970-01-01
相关资源
最近更新 更多