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)
会成功的!
谢谢!
大家好,我正在寻找一些编码建议和技巧。我有一个像这样的 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)
会成功的!
谢谢!