通过命令查找列表中的最大数量

时间:2012-07-16 04:36:05

标签: r list max

我有一个这样的清单:

Ll 
$a
3.4 5.6 -2.1 -7.8
$b
2.1 6.7
$c
-6.7,0.001,8.9

我想找出列表中所有元素的最大数量,而不管符号如何。 即我希望我的外观看起来像这样:

Ll
$a
-7.8
$b
6.7
$c
8.9

有没有办法通过单一命令行执行此操作? 可以使用'by'命令完成吗?

3 个答案:

答案 0 :(得分:11)

可重复的代码/数据总是有帮助:

L1 <- list(a = c(3.4, 5.6, -2.1, -7.8), b = c(2.1, 6.7), c = c(-6.7, 0.001, 8.9))

使用lapply将自己的功能应用于每个元素,which.max可以轻松找到最大值,我们只需在每个元素中获得abs olute值:

lapply(L1, function(x) x[which.max(abs(x))])
$a
[1] -7.8

$b
[1] 6.7

$c
[1] 8.9

答案 1 :(得分:1)

lapply是你的朋友!

例如

.list <- list( a = 1:5, b = runif(7), c = -3:1)
 lapply(.list, function(x) x[which.max(abs(x))])
## $a
## [1] 5
## 
## $b
## [1] 0.9248526
## 
## $c
## [1] -3

答案 2 :(得分:0)

which.max将为您提供索引编号和值,但是,如果您只需要编号,则可以尝试以下操作:

max(sapply(您的列表,最大值))