2016-01-12 21 views
5

से फ़ंक्शंस का उपयोग करके नेस्टेड सूची से तत्व निकालें I purrr पैकेज का उपयोग करके केवल नेस्टेड सूची से तत्व कैसे निकालें? इस मामले में मैं डेटा.फ्रेम को विभाजित करने के बाद इंटरसेप्ट्स का वेक्टर प्राप्त करना चाहता हूं। मैंने पूरा किया है जो मुझे lapply() का उपयोग करने की ज़रूरत है, लेकिन मैं केवल purrr पैकेज का उपयोग करना चाहता हूं।केवल purrr पैकेज

library(purrr) 
mtcars %>% 
split(.$cyl) %>% 
map( ~lm(mpg ~ wt, data = .)) %>%  # shorthand NOTE: ~ lm 
lapply(function(x) x[[1]] [1]) %>% # extract intercepts <==is there a purrr function for this line? 
as_vector()        # convert to vector 

मैंने नक्शा() और at_depth() की कोशिश की है लेकिन कुछ भी मेरे लिए काम नहीं कर रहा था।

+0

आपने 'मानचित्र' का प्रयास कैसे किया? यदि आप फ़ंक्शन नाम 'lapply' हटाते हैं और इसे' मैप 'के साथ प्रतिस्थापित करते हैं - सटीक वही तर्क - यह ठीक काम करता है। – Gregor

+1

मुझे यहां 'मानचित्र' के लिए सहायता पृष्ठ मिला है। ऐसा लगता है कि आप 'लापली' की तुलना में कुछ शॉर्ट-कट कोडिंग कर सकते हैं। नेस्टेड सूचियों को अनुक्रमणित करने के लिए 'map_dbl (सी (1, 1)) 'की तरह। – aosmith

+0

@ ग्रेगोर। Aaaargh! यह बहुत स्पष्ट है। धन्यवाद – hackR

उत्तर

12

map फ़ंक्शंस में नेस्टेड सूचियों को अनुक्रमणित करने के लिए कुछ शॉर्टेंड कोडिंग है। सहायता पृष्ठ से एक सहायक स्निपेट:

घोंसला वाली सूची में गहराई से अनुक्रमणित करने के लिए, एकाधिक मानों का उपयोग करें; सी ("एक्स", "वाई") जेड [["x"]] [["y"]] के बराबर है।

तो नेस्ट अनुक्रमित के लिए कोड का उपयोग कर map_dbl के साथ है, जो एक वेक्टर को कम कर देता है, तो आप बस कर सकते हैं:

mtcars %>% 
    split(.$cyl) %>% 
    map(~lm(mpg ~ wt, data = .)) %>% 
    map_dbl(c(1, 1)) 

     4  6  8 
39.57120 28.40884 23.86803 

मैंने यह भी पाया इस blog post शुरू purrr 0.1.0 उपयोगी है, क्योंकि यह एक दिया शॉर्टेंड कोडिंग का कुछ और उदाहरण जो मैंने उपयोग किया था।

+0

बिल्कुल सही। यह मेरे लिए सबसे अच्छा जवाब है क्योंकि यह उन वैक्टरों को नामों के साथ आउटपुट के रूप में आउटपुट नहीं करता है। चीयर्स! – hackR

संबंधित मुद्दे