У меня есть матрица размера H (r x c), и я хочу сделать выборку этой матрицы 100 раз, извлекая 100 матриц размера (m x c) и сохранять каждую из них в массив dim (m x c x 100).
Для случайного извлечения подвыборок я решил:
- извлекать сто векторов длины m, содержащих случайные
числа из последовательности (1: r)
- сохранить их в матрицу размера (м х 100)
- использовать каждый вектор этой матрицы в качестве идентификаторов для отбора 100 матриц из исходной матрицы H
- Наконец, сохраните каждую матрицу, полученную в этом подобразце, в массив, третье измерение которого будет равно 100.
H = matrix( , nrow=r, ncol=c)
id = seq(1:r)
N_samples = 100
# Empty array and matrix of the random numbers
B = array( , c(m, c, N_samples))
h_sample = matrix( , nrow = m, ncol = N_samples)
# Extract random numbers from the sequence "id" without replacement
for(i in 1:N_samples){
h_sample[,i] = sample(id, m, replace = F)
}
## Now I sample the rows from H according to the identifiers randomly extracted and stored in matrix h_sample, and place each submatrix into the B array
for(j in 1:N_samples){
B[ , , j] = H[h_sample[ ,j], ]
}
Возвращает мне эту ошибку:
Error in B[, , i] = H[h_sample[, i], ] : incorrect number of subscripts
Я знаю, что проблема заключается в последней строке кода, есть ли у вас какие-либо советы по устранению этой ошибки? Не могли бы вы предложить альтернативные способы решения этого упражнения?