सूची में घोंसले के स्तर को निर्धारित करने के लिए कोई आसान तरीका है (यानी एक समारोह)? मुझे पता है कि str
है जिसका उपयोग इस जानकारी को प्राप्त करने के लिए किया जा सकता है। लेकिन क्या ऐसा कुछ है जो परिणाम को वापस देता है? और क्या मैं इस तरह के एक समारोह का उपयोग अलिस्ट के सभी स्तरों (रिकर्सिवली) के नाम प्राप्त करने के लिए कर सकता हूं?आर में घोंसले का स्तर निर्धारित करें?
8
A
उत्तर
10
एक छोटी सी पुनरावर्ती क्रिया आप के लिए यह कर सकते हैं:
depth <- function(this,thisdepth=0){
if(!is.list(this)){
return(thisdepth)
}else{
return(max(unlist(lapply(this,depth,thisdepth=thisdepth+1))))
}
}
अगर आपने लोव प्रयोग करने के लिए
l1=list(1,2,3)
l2=list(1,2,l1,4)
l3=list(1,l1,l2,5)
require(testthat)
expect_equal(depth(l1),1)
expect_equal(depth(l2),2)
expect_equal(depth(l3),3)
क्षमा याचना: package:testthat
मिला, यहाँ एक परीक्षण सेट है परिवर्तनीय नामों में आर-केस एल। पठनीयता विफल
2
सभी तत्वों को नाम दिया गया है, तो आप (unlist
के कोड से) इस इस्तेमाल कर सकते हैं:
mylist <- list(a=list(x=1),b=list(c=list(y=c(2,3)),d=c("a","b")))
names(.Internal(unlist(mylist, TRUE, TRUE)))
#[1] "a.x" "b.c.y1" "b.c.y2" "b.d1" "b.d2"
0
अब आप पैकेज से depth()
का उपयोग कर सकते हैं!
नोट: वर्तमान में समारोह purrr
के विकास के संस्करण का हिस्सा है लेकिन एक संस्करण टक्कर हो जाता है
संबंधित मुद्दे
- 1. आर डेटाफ्रेम में स्तर
- 2. जुनीट: कोड कवरेज का स्तर कैसे निर्धारित करें?
- 3. आर वैश्विक स्तर पर पैकेज स्थापित करें
- 4. Django टेम्पलेट्स - घोंसले में लूप
- 5. ओपनएमपी: समानांतरता घोंसले का क्या फायदा है?
- 6. FakeItEasy गहरे घोंसले प्रकार
- 7. आर: यह निर्धारित करें कि विंडोज या लिनक्स
- 8. कम सीएसएस घोंसले वर्ग
- 9. उद्धरण के तीन स्तरों के साथ घोंसले
- 10. आर
- 11. रेल पर रूबी में दीप मॉडल घोंसले
- 12. निर्धारित करें कि ग्रहण
- 13. यह निर्धारित करना कि आर प्रोग्रामिंग भाषा
- 14. आर को एक रेग्रेशन में संदर्भ के रूप में निर्दिष्ट कारक स्तर का उपयोग करने के लिए कैसे मजबूर करें?
- 15. आर
- 16. Google धरती बाउंडिंग बॉक्स से ज़ूम स्तर निर्धारित करना
- 17. आर: मैट्रिस से एकाधिक जाली स्तर के स्प्लॉट
- 18. आर में दावा कैसे करें?
- 19. प्रसंग प्रत्येक समूह के लिए अद्वितीय एक निर्धारित स्तर पर
- 20. सी ++: तकनीकी स्तर (एएसएम) पर आर-वैल्यू संदर्भ क्या हैं?
- 21. आर में, gsub में regex [: punct:] का उपयोग कैसे करें?
- 22. NA स्तर
- 23. ऑब्जेक्ट का आकार निर्धारित करें: स्कैला/एसबीटी
- 24. आर स्क्रिप्ट: यह निर्धारित करें कि स्क्रिप्ट जीयूआई में या कमांड लाइन
- 25. का निर्धारण नाम आर में लोड
- 26. आर
- 27. विंडोज में प्रोग्राम का उपयोग प्रोग्रामेटिक रूप से निर्धारित करें?
- 28. आर भाषा: अगले शीर्ष स्तर लूप पर कैसे कूदें?
- 29. मेरी सोच का वेक्टरिज़ करें: आर
- 30. आर फंक्शन 'स्वीप' का उपयोग कैसे करें
आप की कोशिश कर सकते 'रों <पैकेज एक बार आधिकारिक क्रैन संस्करण का हिस्सा बन जाएगा - (capture.output (str (mylist, nest.lev = 1)) [- 1]) 'और फिर' ..' की संख्या को कैप्चर करने के लिए स्ट्रिंग प्रोसेसिंग का उपयोग करें जो 's' के प्रत्येक तत्व को प्रारंभ करता है। (अगर मुझे 10 मिनट बाद मिलते हैं और तब तक कोई बेहतर जवाब नहीं मिलता है, तो मैं इसे खुद एक शॉट दूंगा।) –