【问题标题】:Subsetting list elements using contents of list elements使用列表元素的内容子集列表元素
【发布时间】:2020-08-21 01:12:58
【问题描述】:

我有一个名为 nested_list 的嵌套列表。

nested_list <- list(B.Al = list(ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData = structure(c(0.739, 
651, 91.589, 82.353), .Dim = c(1L, 4L), .Dimnames = list("KAPPA", 
    c("Testing.data", "Cutoff", "Sensitivity", "Specificity")))), OA.Al = list(ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData = structure(c(0.632, 
654, 77.57, 92.157), .Dim = c(1L, 4L), .Dimnames = list("KAPPA", 
    c("Testing.data", "Cutoff", "Sensitivity", "Specificity")))), B.Ca = list(ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData = structure(c(0.47, 
556, 90.654, 50.98), .Dim = c(1L, 4L), .Dimnames = list("KAPPA", 
    c("Testing.data", "Cutoff", "Sensitivity", "Specificity")))))

nested_list 的元素是B.AlOA.AlB.Canested_list$B.Alnested_list$OA.Alnested_list$B.Ca 也是列表。

class(nested_list) 返回"list"
class(nested_list$B.Al) 返回"list"

nested_list$B.Alnested_list$OA.Alnested_list$B.Ca 列表中的唯一元素是矩阵(即nested_list$B.Al$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData)。该矩阵有一列标有“Testing.data”。

我想确定nested_list$B.Al$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedDatanested_list$OA.Al$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedDatanested_list$B.Ca$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData 中的哪一个具有最高的“Testing.data”值,并且我想返回一个列表,其中只有最高的那个。

在本例中,nested_list$B.Al$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData[1] = 0.739。
nested_list$OA.Al$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData[1] = 0.632。
nested_list$B.Ca$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData[1] = 0.47。

因此,B.Al 的“Testing.data”值最高。因此,我想返回以下列表;

result <- list(B.Al = list(ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData = structure(c(0.739, 
651, 91.589, 82.353), .Dim = c(1L, 4L), .Dimnames = list("KAPPA", 
    c("Testing.data", "Cutoff", "Sensitivity", "Specificity")))))

【问题讨论】:

    标签: r list for-loop lapply


    【解决方案1】:

    从每个列表中提取'Testing.data'的值,使用which.max获取最大值的索引并将其用于子集nested_list

    nested_list[which.max(sapply(nested_list, function(x) x[[1]][, 'Testing.data']))]
    
    #$B.Al
    #$B.Al$ABIBAL_EMmeanByKAPPA_mergedAlgo_mergedRun_mergedData
    #      Testing.data Cutoff Sensitivity Specificity
    #KAPPA        0.739    651      91.589      82.353
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 2016-06-22
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多