I have a list where each element is a matrix, and I want to order each matrix individually Order a matrix is as easy as this: data <- data[order(data$value),] But I am struggling to order a list of matrix individually I have tried this with some variations: for(i in 1:lenght(data)){ data[i] <- data[i][order(data[i]$value),] } data is the list that contains matrices I have also tried with apply functions Some ideas? Thanks!! All the code: #The aim is to show one hospital for each state given an outcome #in the posotion num of the ranking, its a learning exercise rankall <- function(outcome, num = "best"){ if (outcome == "heart attack"){ col <- 11 }else if(outcome == "heart failure"){ col <- 17 }else if(outcome == "pneumonia"){ col <- 23 }else{ stop("invalid outcome") } data <- read.csv("outcome-of-care-measures.csv", colClasses = "character") data <- data[, c(2, 7,col)] colnames(data) <- c("Hospital", "State", "value") data$value <- as.numeric(data$value) data <- data[complete.cases(data),] data <- split(data, data$State) #data2 is the final result dataframe data2 <- data.frame(matrix(nrow = 0, ncol = 3)) colnames(data2) <- c("Hospital", "State", "value") #From here is what I do not know how to do it. #data is a list of matrices, each matrix corresponds to a state #data2 is the result dataframe, where I am going to add the row num of each matrix in data #1. Order each matrix in data by value and alfabetically if tie #2. Add to data 2 the row num of each matrix in data once they are sort for(i in 1:lenght(data)){ data[i] <- data[i][order(data[i]$Hospital),] data[i] <- data[i][order(data[i]$value),] if(num =="best"){ num = 1; }else if(num == "worst"){ num = nrow(data[i]) } num <- as.numeric(num) rbind(data2,data[i][num]) } return(data2) } Sorry about identations, it changed when I paste the code