【问题标题】:Find max value in nested list in R在R中的嵌套列表中查找最大值
【发布时间】:2021-01-13 10:48:18
【问题描述】:

我有一个嵌套列表如下:

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" 我怎样才能只使用 base r 来做到这一点?

【问题讨论】:

    标签: r list loops nested nested-lists


    【解决方案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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-15
        • 2016-01-22
        • 1970-01-01
        • 2018-10-24
        • 2021-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多