R递归函数给出NA结果

时间:2017-11-08 16:14:15

标签: r function

我试图使用R来计算矩阵行列式,使用拉普拉斯表达式。

我使用递归函数,我的代码附在下面。它运行正常,但给了我一个NA结果。我不知道我错在哪里。有谁可以帮助我?

determinant<-function(A){
  n<-ncol(A)
  det<-numeric(n)
  A<-matrix(nrow=n,ncol=n) #A is a square matrix, all values are generated randomly
  if (n==1) {
    det=A[1,1] #give the determinant if n=1
  }
  return(det)
}

M3 <- matrix(rnorm(5^2), 5, 5)
determinant(M3)

1 个答案:

答案 0 :(得分:1)

问题在于您的行A<-matrix(nrow=n,ncol=n)这会使用填充了A值的矩阵替换参数NA;如果你评论它可以正常工作:

determinant<-function(A){
    n<-ncol(A)
    det<-numeric(n)
    # A<-matrix(nrow=n,ncol=n) #A is a square matrix, all values are generated randomly
    if (n==1) {
        det=A[1,1] #give the determinant if n=1
    }
    else if (n==2){
        det=A[1,1]*A[2,2]-A[1,2]*A[2,1] #give the determinant if n=2
    }
    return(det)
}

set.seed(123) # set the seed for reproducibility
M3 <- matrix(rnorm(5^2), 5, 5)
determinant(M3)

[1] -0.3867446

det(M3) # check the result

[1] -0.3867446