Dear R users, Let's say I have a list with components being 'm' matrices (as exemplified in the "mylist" object below). Now, I'd like to subset this list based on an index vector, which will partition each matrix 'm' in 2 sub-matrices. My questions are: 1. Is there an elegant way to have the results shown in mylist2 for an arbitrary number of matrices in mylist? 2. The column names are 'lost' for mylist2[[2]] and mylist2[[4]] (but not for mylist2[[1]] and mylist2[[3]]). Is there a way to keep the column names in the results of mylist2? mylist <- list(matrix(1:9,3,3), matrix(10:18,3,3)) colnames(mylist[[1]])=c('x1','x2','x3') colnames(mylist[[2]])=c('x4','x5','x6') index <- list(2) index[[1]] <- c(TRUE,FALSE,TRUE) index[[2]] <- c(FALSE,TRUE,TRUE) mylist2 <- list(as.matrix(mylist[[1]][,index[[1]]]), as.matrix(mylist[[1]][,!index[[1]]]), as.matrix(mylist[[2]][,index[[2]]]), as.matrix(mylist[[2]][,!index[[2]]])) Thanks for any help, Axel. [[alternative HTML version deleted]]