我有两个向量x和y带有一些值,我需要生成矩阵,这些元素将由应用于这两个向量的函数f(x,y)返回。那就是矩阵M将具有典型元素
M[i,j] <- f(x[i], y[j])
如果我想避免循环,最有效的方法是什么?我可以使用sapply函数生成矩阵列或行,即
M[i, ] <- sapply(y, f, x = x[i])
但是我仍然需要在非常慢的其他维度中应用循环,因为x的维度很大。是否可以使用apply系列函数并完全避免循环?
答案 0 :(得分:4)
这正是outer
函数的作用:
outer(x, y, f)
如果f
没有矢量化,则需要:
outer(x, y, Vectorize(f))