मेरे पास विभिन्न डेटासेट के साथ अलग-अलग काम करने वाले पाइप ऑपरेटरों (%>%) की श्रृंखलाओं का एक सेट है।

उदाहरण के लिए:

dataset %>%
   mutate(...) %>%
   filter(...) %>%
   rowwise() %>%
   summarise() %>%
   etc...

अगर मैं इन श्रृंखलाओं के कुछ हिस्सों का पुन: उपयोग करना चाहता हूं, तो क्या इसे करने का कोई तरीका है, इसे केवल एक समारोह में लपेटे बिना? उदाहरण के लिए (छद्म कोड में स्पष्ट रूप से):

subchain <- filter(...) %>%
   rowwise() %>%
   summarise() 

# and then instead of the chain above it would be:
dataset %>%
   mutate(...) %>%
   subchain() %>%
   etc...

6
Philipp Chapkovski 4 जिंदा 2021, 11:58
क्या आपके चुने हुए पाइप और उस पर पाइप के साथ एक फ़ंक्शन बनाना संभव नहीं होगा? मुझे लगता है कि आप जो चाहते हैं उसे हासिल करेंगे।
 – 
mhovd
4 जिंदा 2021, 12:05

1 उत्तर

सबसे बढ़िया उत्तर

वांछित छद्म कोड के सिंटैक्स में समान:

library(dplyr)

subchain <- . %>% 
  filter(mass > mean(mass, na.rm = TRUE)) %>% 
  select(name, gender, homeworld)

all.equal(
  starwars %>% 
    group_by(gender) %>% 
    filter(mass > mean(mass, na.rm = TRUE)) %>% 
    select(name, gender, homeworld),
  starwars %>% 
    group_by(gender) %>% 
    subchain()
)

एक पाइपिंग अनुक्रम की शुरुआत के रूप में एक बिंदु . का उपयोग करना। यह वास्तव में फंक्शन रैपिंग के करीब है, लेकिन इसे मैग्रिटर फंक्शनल सीक्वेंस कहा जाता है। ?functions देखें और magrittr::functions(subchain) आजमाएं

8
Aurèle 4 जिंदा 2021, 12:10