在R中的嵌套列表中查找最大值
Find max value in nested list in 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"
我想找到一种方法 return 具有最高值的对:"Value3" "20"
我怎样才能只使用 base r 来做到这一点?
也许这会有所帮助:
#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"
我们可以提取list
中的第二个元素,unlist
,将其转换为numeric
,找到最大元素的index,用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"
我有一个嵌套列表如下:
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"
我想找到一种方法 return 具有最高值的对:"Value3" "20"
我怎样才能只使用 base r 来做到这一点?
也许这会有所帮助:
#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"
我们可以提取list
中的第二个元素,unlist
,将其转换为numeric
,找到最大元素的index,用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"