矩阵上不正确的下标数量错误

Error in incorrect number of subscripts on matrix

我正在尝试对矩阵 Y 进行简单的参数化 bootstrap。

str(Y)

num [1:10, 1:7] 2333 2815 2326 3097 2813 ...
 - attr(*, "dimnames")=List of 2
 ..$ : chr [1:10] "A77" "A86" "C87" "C88" ...
 ..$ : chr [1:7] "CHIP" "CORS" "EVAN" "HODG" ...

B = 100000 
I = nrow(Y)
J = ncol(Y)
M = min(I-1,J-1)
D =I-1
MaxK = M-2

一些矩阵的初始化

T <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
ProbT <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
Star <{ matrix(NA, nrow = M, ncol = B)

奇异值分解

RowMeans =matrix(rowMeans(Y), nrow = I, ncol = J)
ColMeans= t(matrix(colMeans(Y), nrow = J, ncol = I))
Mean = matrix(mean(Y), nrow = I, ncol = J)
E=Y-RowMeans-ColMeans+Mean
lambda = svd(E)$d ; lambda

检验统计

K <- 0
while(K <= MaxK){
  Term <- K + 1
  if(K > 0) lambda[K] <- 0
  T[Term, 1] <- lambda[Term]^2/(t(lambda)%*%lambda)


boot <- 1
while(boot <= B){
Eb<-matrix(rnorm((D-K)*(J-1-K)), nrow=I-1-K, ncol=J-1-K)
lambdab <- svd(Eb)$d
Tb <-lambdab[1]^2/(t(lambdab)%*%lambdab)
      
ifelse(Tb > T[Term,1], Star[Term, boot] <- 1, Star[Term, boot] <- 0)
boot = boot + 1}
    
ProbT[Term, 1] <- rowMeans(Star)[Term]
K <- K+1}

但是我收到这样的错误

Error in T[Term, 1] <- lambda[Term]^2/(t(lambda) %*% lambda) :    incorrect number of subscripts on matrix

哪里错了?

谢谢。

解决了。

必须定义 T ProbT Star 矩阵。

T <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
ProbT <{ matrix(NA, nrow = MaxK + 1, ncol = 1)
Star <{ matrix(NA, nrow = M, ncol = B)