2012-07-16 61 views
5

找出最大數我有這樣一個列表:通過命令從列表

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

+0

'by'對由分類變量定義的子集執行操作。在這個問題定義中我看不到這樣的變量。具有一組iregulat長度的列表對於'by'函數來說是一個特別不合適的參數。 – 2012-07-16 04:52:59

回答

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 
+0

比我的回答更好。 – 2012-07-16 04:57:52

+0

以及如何找到最大值的指數? – Seymour 2018-03-02 18:58:03

+0

返回它們而不是數值lapply(L1,function(x)which.max(abs(x))) – mdsumner 2018-03-05 00:22:20

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