重新创建diag()函数

时间:2019-06-22 09:34:47

标签: r function

我目前正在尝试在R中复制module.exports = class BotUpdateHandler { handle(update) { // eslint-disable-next-line global-require const Bot = require('./Bot'); // code .... const txt = update.text; const command = Bot.getCommandIndex(txt); } } 函数,以便更好地理解。不幸的是,我的解决方案仅对对称矩阵有用。

diag()

对于所有可以概括我的功能的技巧,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

错误来自循环遍历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