【问题标题】:by command to find out the maximum number from a list通过命令从列表中找出最大数量
【发布时间】:2012-07-14 22:29:58
【问题描述】:

我有一个这样的列表:

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'命令来完成吗?

【问题讨论】:

  • by 对分类变量定义的子集进行操作。我在这个问题定义中看不到这样的变量。具有一组 iregulat 长度的列表将是一个特别不适合 by 函数的参数。

标签: r list max


【解决方案1】:

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

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很容易找到最大值,我们只需在每个元素中得到absolute值:

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

$b
[1] 6.7

$c
[1] 8.9

【讨论】:

  • 如何找到最大值的索引?
  • 返回它们而不是值 lapply(L1, function(x) which.max(abs(x)))
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    which.max 会给你索引号和值,但是如果你只需要数字,你可以试试这个:

    max(sapply(yourlist, max))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多