From 76d31e593ae359465bd64b0d41e79829af766ef2 Mon Sep 17 00:00:00 2001 From: Waldir Leoncio Date: Thu, 22 Dec 2022 13:39:48 +0100 Subject: [PATCH] Translated setdiag() --- R/setdiag.R | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/R/setdiag.R b/R/setdiag.R index b77f76d..df57346 100644 --- a/R/setdiag.R +++ b/R/setdiag.R @@ -1,21 +1,19 @@ setdiag <- function(M, v) { - stop("needs translation") - # function M = setdiag(M, v) - # % SETDIAG Set the diagonal of a matrix to a specified scalar/vector. - # % M = set_diag(M, v) + # SETDIAG Set the diagonal of a matrix to a specified scalar/vector. + # M <- set_diag(M, v) - # n = length(M); - # if length(v)==1 - # v = repmat(v, 1, n); - # end + n <- length(M) + if (length(v) == 1) { + v <- repmat(v, c(1, n)) + } - # % e.g., for 3x3 matrix, elements are numbered - # % 1 4 7 - # % 2 5 8 - # % 3 6 9 - # % so diagnoal = [1 5 9] + # e.g., for 3x3 matrix, elements are numbered + # 1 4 7 + # 2 5 8 + # 3 6 9 + # so diagnoal = [1 5 9] - - # J = 1:n+1:n^2; - # M(J) = v; + J <- seq(1, n ^ 2, n + 1) + M[J] <- v + return(M) }