Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 重新创建diag()函数_R_Function - Fatal编程技术网

R 重新创建diag()函数

R 重新创建diag()函数,r,function,R,Function,我目前正在尝试复制R中的diag()函数,以便更好地理解。不幸的是,我的解只对对称矩阵有用 diagnew <- function(x){ k <- c() for(i in 1:nrow(x)){ k[i] <- x[i,i] } return(k) } diagnew错误来自循环传递min(nrow,ncol) diagnew diagnew <- function(x){ n <- min(nrow(x), ncol(x))

我目前正在尝试复制R中的
diag()
函数,以便更好地理解。不幸的是,我的解只对对称矩阵有用

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

diagnew错误来自循环传递
min(nrow,ncol)

diagnew
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