2012-07-16 9 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' एक विशिष्ट चर द्वारा परिभाषित सबसेट पर संचालन करता है। मुझे इस समस्या परिभाषा में ऐसा चर दिखाई नहीं देता है। लंबाई के एक इरगुलैट सेट के साथ सूचीबद्ध 'कार्य' के लिए विशेष रूप से अनुपयुक्त तर्क होगा। –

उत्तर

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

मेरा से बेहतर जवाब। –

+0

और मैं अधिकतम मूल्य के सूचकांक कैसे पा सकता हूं? – Seymour

+0

मूल्य के बदले उन्हें वापस लौटाएं (एल 1, फ़ंक्शन (एक्स) जो। मैक्स (abs (x))) – mdsumner

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