问题描述
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),B.Ca = list(ABIBAL_emmeanByKAPPA_mergedAlgo_mergedRun_mergedData = structure(c(0.47,556,90.654,50.98),"Specificity")))))
nested_list
的元素是B.Al
,OA.Al
和B.Ca
。 nested_list$B.Al
,nested_list$OA.Al
和nested_list$B.Ca
也是列表。
class(nested_list)
返回"list"
class(nested_list$B.Al)
返回"list"
列表nested_list$B.Al
,nested_list$OA.Al
和nested_list$B.Ca
中的唯一元素是矩阵(即nested_list$B.Al$ABIBAL_emmeanByKAPPA_mergedAlgo_mergedRun_mergedData
)。该矩阵有一个标记为“ Testing.data”的列。
我想确定nested_list$B.Al$ABIBAL_emmeanByKAPPA_mergedAlgo_mergedRun_mergedData
,nested_list$OA.Al$ABIBAL_emmeanByKAPPA_mergedAlgo_mergedRun_mergedData
和nested_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,"Specificity")))))
解决方法
从每个列表中提取'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