Я думаю, проблема в том, что способ x
определен, подмножества:
x[row, column, array level]
Вы пытаетесь получить доступ к столбцам в области уровня массива. Например, если у вас есть inds1 = 3
, то pop[i, ,inds1]
будет пытаться получить доступ к третьему массиву, который не существует. Смотрите ниже рабочий пример. Чтобы обратиться к вашему текущему примеру, нам нужно больше информации о pop
и K
:
x <- array(1:25, dim = c(5, 10, 2)) # 2-level array with 5 rows and 10 columns
m <- 0.20 # proportion of columns to swap
set.seed(1)
inds1 <- sample(ncol(x), size = ceiling(ncol(x) * m), replace = FALSE) # sample random columns
inds2 <- sample(ncol(x), size = ceiling(ncol(x) * m), replace = FALSE)
x
#, , 1
#
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 1 6 11 16 21 1 6 11 16 21
#[2,] 2 7 12 17 22 2 7 12 17 22
#[3,] 3 8 13 18 23 3 8 13 18 23
#[4,] 4 9 14 19 24 4 9 14 19 24
#[5,] 5 10 15 20 25 5 10 15 20 25
#
#, , 2
#
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 1 6 11 16 21 1 6 11 16 21
#[2,] 2 7 12 17 22 2 7 12 17 22
#[3,] 3 8 13 18 23 3 8 13 18 23
#[4,] 4 9 14 19 24 4 9 14 19 24
#[5,] 5 10 15 20 25 5 10 15 20 25
inds1;inds2
[1] 3 4
[1] 6 9
Таким образом, чтобы поменять местами столбцы 3 и 6 и столбцы 4 и 9, мы можем сделать:
temp <- x[, inds1, 1]
x[,inds1, 1] <- x[,inds2, 2]
x[,inds2, 2] <- temp