Найти максимальное значение во вложенном списке в R

#r #list #loops #nested #nested-lists

#r #Список #циклы #вложенный #вложенные списки

Вопрос:

У меня есть вложенный список следующим образом:

 results <- list()
c <- 1
outcomes <- c("Value1", "Value2", "Value3")
values <- c(2, 11, 20)
for(i in outcomes){
  for(p in 1:length(values)){
    results[[c]]  <- c(outcomes[p], values[p])
    c <- c   1
  }
}
results <- results[1:3]
>results
[[1]]
[1] "Value1" "2"     

[[2]]
[1] "Value2" "11"    

[[3]]
[1] "Value3" "20"
  

Я хочу найти способ вернуть пару, которая имеет наибольшее значение следующим образом: "Value3" "20"
Как я могу сделать это, используя только базовый r?

Ответ №1:

Может быть, это может быть полезно:

 #Code
results[which(unlist(lapply(results,function(x) as.numeric(x[2])))==max(unlist(lapply(results,function(x) as.numeric(x[2])))))]
  

Вывод:

 [[1]]
[1] "Value3" "20" 
  

Ответ №2:

Мы можем извлечь второй элемент из list , unlist , преобразовать его, чтобы numeric найти индекс максимального элемента с which.max , чтобы извлечь list

 results[which.max(as.numeric(unlist(sapply(results, `[`, 2))))]
#[[1]]
#[1] "Value3" "20"    
  

Или слегка сжать с

 results[which.max(as.numeric(do.call(rbind, results)[,2]))]
#[[1]]
#[1] "Value3" "20"