【发布时间】:2020-12-21 06:29:37
【问题描述】:
它应该创建一个 n x n 矩阵,其对角线为 2,第一个上下对角线为 -1。
M <- function(n){
m <- diag(x = 2, ncol = n, nrow = n)
i <- 1
for(i in 1:n-1){
a <- i
b <- i + 1
m[a, b] <- -1
m[b, a] <- -1
i <- i + 1
}
return(m)
}
它返回例如 n = 5,一个 5 x 5 矩阵
M(5)
[,1] [,2] [,3] [,4] [,5]
[1,] 2 -1 0 0 0
[2,] -1 2 -1 0 0
[3,] 0 -1 2 -1 0
[4,] 0 0 -1 2 -1
[5,] 0 0 0 -1 2
我希望我的函数返回相同的内容,但没有 for 循环。
【问题讨论】:
-
您想如何对其进行矢量化?您是否希望它适用于矢量
n而不是单个值?目前尚不清楚您想要的结果是什么。 -
或许
Vectorize(M)(5:6) -
我编辑了我的原始帖子以帮助解释我想要什么。我不想在我的函数中使用 for 循环。
-
顺便说一句,你的
1:n-1。您打算将其设为(1:n)-1(从 0 开始)还是1:(n-1)(从 1 开始)? -
应该是1:(n-1),从1开始
标签: r vectorization