2012-06-20 7 views
5

PHP में के लिए में सूची के नाम जाओ क्या आर में तुलनीय है, जब नामित सूचियों से अधिक पाशन?

+0

क्या आप इस बारे में थोड़ा और विशिष्ट हो सकते हैं कि आप 'फॉर लूप' या आर में 'लापली' जैसी किसी चीज़ के साथ लूपिंग कर रहे हैं या नहीं? शायद एक बहुत ही बुनियादी उदाहरण (आर कोड में)? – joran

+0

@ जोरन: स्पष्ट प्रश्न। हां, सूचियों के लिए लूपिंग। मैं इस विशिष्ट उदाहरण में लापरवाही का उपयोग नहीं कर सकता। मैंने यहां एक संबंधित प्रश्न पूछा है: http://stackoverflow.com/questions/11112842/r-how-to-store-multi-layer-data – naught101

+1

ठीक है; आपको केवल आर में लूप सिंटैक्स के लिए वेनिला 'मिलता है। आमतौर पर आप अपने लूप इंडेक्स' i' के साथ 'नाम (myList)' या 'myList' को सब्सक्राइब करके प्रत्येक टुकड़ा (नाम + तत्व) देखेंगे। – joran

उत्तर

7

कुछ डमी डेटा और एक मूर्खतापूर्ण काल्पनिक उदाहरण का उपयोग

ll <- list(A = 1:10, B = LETTERS[1:10], C = letters[1:10]) 

आप कर सकते हैं lapply()ll के तत्वों के सूचकांक से अधिक:

out <- lapply(seq_along(ll), 
      function(ind, list, names) { 
       paste(names[ind], "=", paste(list[[ind]], collapse = ", ")) 
      }, list = ll, names = names(ll)) 

R> out 
[[1]] 
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10" 

[[2]] 
[1] "B = A, B, C, D, E, F, G, H, I, J" 

[[3]] 
[1] "C = a, b, c, d, e, f, g, h, i, j" 

या सूची से अधिक for() पाश:

ll2 <- vector("list", length(ll)) 
nams <- names(ll) 
for(i in seq_along(ll)) { 
    ll2[[i]] <- paste(nams[i], "=", paste(ll[[i]], collapse = ", ")) 
} 
ll2 

R> ll2 
[[1]] 
[1] "A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10" 

[[2]] 
[1] "B = A, B, C, D, E, F, G, H, I, J" 

[[3]] 
[1] "C = a, b, c, d, e, f, g, h, i, j" 
3

लिस के नाम प्राप्त करने के लिए आप बस names(list) का उपयोग करें।

ll <- list(A = 1:10, B = LETTERS[1:10], C = letters[1:10]) 
names(ll) 
#[1] "A" "B" "C" 

अधिकांश * लागू फ़ंक्शन उन मानों को वापस लाएंगे जिन्हें उचित नाम दिया गया है यदि सूची का नाम शुरू किया गया था।

sapply(ll, max) 
# A B C 
#"10" "J" "j" 
संबंधित मुद्दे