R在不使用循环的情况下填充矩阵

R fill up matrix without using a loop

大家好,我正在寻找一些编码建议和技巧。我有一个像这样的 10x10 矩阵:

mat <- matrix(NA, nrow = 10, ncol = 10)

和一个接受两个数字和 returns 一个简单标量的函数:

fct <- function(x1, x2){
return(x1 * x2)
}

我的函数有点复杂,但这只是为了说明目的。

我想通过将函数 fct 应用于两个向量来填充矩阵 mat,比方说:

x1 <- c(1:10)
x2 <- c(1:10)

我可以通过循环轻松完成,但我想知道是否有人知道更好的方法,也许使用 mapply/Map。

感谢您的帮助!

像这样向量化函数:

fct <- function(x1, x2){
out <- numeric(length = length(x1))
for(i in seq_along(x1)) {
    out[i] <- x1[i] * x2[i]
 }
return(out)
}

然后应用外部:

outer(x1, x2, fct)

会成功的!

谢谢!