применение условия if-else к 4 массивам, содержащим 19 матриц dim 50 * 50

#r #arrays #if-statement #conditional-statements #subscript

#r #массивы #if-оператор #условные операторы #нижний индекс

Вопрос:

У меня есть 4 матрицы 50 * 50, и я хочу использовать if-else, чтобы получить 4 набора двоичных матриц. Теперь, если я хочу применить последовательность пороговых значений, у меня возникают проблемы.

Пожалуйста, посмотрите следующий код:

 X <- mvrnorm(n=50, mu = rep(0, 50), Sigma = matrix(1,50,50) diag(50))
p1<- nrow(X)
threshold <- seq(from = 5, to = 95, by = 5)

array1<-array(0,c(p1,p1,length(threshold)))
array2<-array(0,c(p1,p1,length(threshold)))
array3<-array(0,c(p1,p1,length(threshold)))
array4<-array(0,c(p1,p1,length(threshold)))

criteria1 <- t(X)%*%X
criteria2 <- t(X) X
criteria3 <- sqrt(t(X)%*%X)
criteria4 <- (t(X) X)/2

for (i in 1:length(threshold)) {
  array1[,,i] <- ifelse( criteria1 <threshold[i],0,1)
  array2[,,i] <- ifelse( criteria2 <threshold[i],0,1)
  array3[,,i] <- ifelse( criteria3 <threshold[i],0,1)
  array4[,,i] <- ifelse( criteria4 <threshold[i],0,1)
}

Error in array4[, , i] <- ifelse(criteria2 < threshold[i], 0, 1) : 
  incorrect number of subscripts

  

Комментарии:

1. Можете ли вы показать объект p1 , поскольку он возвращает ошибку

2. это nrow(X)

3. Ваш такой my.mat1 же, как array1 ? В этом случае код работает нормально для меня

4. да. прошу прощения. Я изменил его в своем коде.

5. Ваш код не показывает никаких ошибок для меня. Попробуйте свой код в новом сеансе R