У меня есть список матриц (mat_list).Я хочу создать новый список с выбранным подмножеством столбцов из каждой матрицы.У меня есть другой список чисел (col_list), который указывает номера столбцов, чтобы сохранить.Пример набора данных:
> mat_list <- list(structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L), .Dim = c(4L, 3L), .Dimnames = list(NULL, c("V1", "V2", "V3"))),structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L), .Dim = c(4L, 3L), .Dimnames = list(NULL, c("V1", "V2", "V3")))) ; names(mat_list) <- c("mat1","mat2")
> mat_list
$mat1
V1 V2 V3
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
$mat2
V1 V2 V3
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> col_list <- list(structure(c(1,3)),structure(c(2,3))) ; names(col_list) <- c("var1","var2")
> col_list
$var1
[1] 1 3
$var2
[1] 2 3
Мне бы хотелось получить следующий вывод:
> my_list
$mat1
V1 V3
[1,] 1 9
[2,] 2 10
[3,] 3 11
[4,] 4 12
$mat2
V2 V3
[1,] 5 9
[2,] 6 10
[3,] 7 11
[4,] 8 12
Я пытался использовать lapply для подстановки этих столбцов во всех матрицах.Самое близкое, что я получил, - это
> lapply(mat_list,function(x) x[,col_list$var1])
$mat1
V1 V3
[1,] 1 9
[2,] 2 10
[3,] 3 11
[4,] 4 12
$mat2
V1 V3
[1,] 1 9
[2,] 2 10
[3,] 3 11
[4,] 4 12
. Здесь используются значения из col $ var1, применяемые ко всем матрицам в mat_list.Но я не смог успешно применить это ко всем (обоим) элементам col_list - например, путем реализации lapply для var_list, что-то вроде
lapply(mat_list,function(x) x[,lapply(var_list)])
Я благодарен за любой ввод.