Воссоздание функции diag () - PullRequest
3 голосов
/ 22 июня 2019

В настоящее время я пытаюсь продублировать функцию diag() в R, чтобы лучше понять. К сожалению, мое решение полезно только для симметричных матриц.

diagnew <- function(x){
  k <- c()
  for(i in 1:nrow(x)){
    k[i] <- x[i,i]
  }
  return(k)
}

Буду признателен за любые советы, которые позволят мне обобщить мою функцию.

1 Ответ

3 голосов
/ 22 июня 2019

Ошибка из-за прохода цикла min(nrow, ncol).

diagnew <- function(x){
  n <- min(nrow(x), ncol(x))
  k <- vector(class(x[1,1]), n)
  for(i in seq.int(n)){
    k[i] <- x[i,i]
  }
  k
}

mat <- matrix(1:10, 5)
diag(mat)
diagnew(mat)

identical(diag(mat), diagnew(mat))
#[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...