#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