R में%>% फ़ंक्शन का क्या अर्थ है?


119

मैं का उपयोग देखा है %>%जैसे कुछ संकुल में (प्रतिशत की तुलना में प्रतिशत अधिक) समारोह dplyr और rvest । इसका क्या मतलब है? क्या यह R में क्लोजर ब्लॉक लिखने का एक तरीका है?


10
या देखिए?'%>%'
jbaums

6
धन्यवाद डेविड! jbaums, दुर्भाग्य से इस बारे में कोई डॉक्टर नहीं है। निर्दिष्ट पैकेजों और पुस्तकालयों में "%>% '" कोई% और% के लिए कोई प्रलेखन नहीं "का प्रतिकार करता है
अल्फाकिनी

6
@alf। आपको library(magrittr)या library(dplyr)पहले या फिर चलाने की आवश्यकता है ?'%>%', हालांकि मेरा लिंक अधिक सूचना प्रदान करता है
डेविड अरेनबर्ग


जवाबों:


141

% ...% संचालक

%>%इसका कोई अंतर्निहित अर्थ नहीं है, लेकिन उपयोगकर्ता (या पैकेज) %whatever%किसी भी तरह से फ़ॉर्म के ऑपरेटरों को परिभाषित करने के लिए स्वतंत्र है । उदाहरण के लिए, यह फ़ंक्शन कॉमा और अंतरिक्ष के बाद अपने बाएं तर्क से मिलकर एक स्ट्रिंग लौटाएगा और फिर यह सही तर्क होगा।

"%,%" <- function(x, y) paste0(x, ", ", y)

# test run

"Hello" %,% "World"
## [1] "Hello, World"

आर का आधार %*%(मैट्रिक्स mulitiplication), %/%(पूर्णांक विभाजन) प्रदान करता है , %in%(rhs का एक घटक lhs है?), %o%(बाहरी उत्पाद) और %x%(kronecker उत्पाद)। यह स्पष्ट नहीं है कि %%इस श्रेणी में आता है या नहीं, लेकिन यह मोडुलो का प्रतिनिधित्व करता है।

expm आर पैकेज, expm, एक मैट्रिक्स शक्ति ऑपरेटर को परिभाषित करता है %^%। उदाहरण के लिए R में मैट्रिक्स पावर देखें ।

ऑपरेटर ऑपरेटर आर पैकेज ने बड़ी संख्या में ऐसे ऑपरेटरों को परिभाषित किया है जैसे %!in%(नहीं %in%)। Http://cran.r-project.org/web/packages/operators/operators.pdf देखें

पाइप्स

magrittr%>% magrittr R पैकेज के मामले में इसे magrittr vignette में चर्चा के रूप में परिभाषित किया गया है। Http://cran.r-project.org/web/packages/magrittr/vignettes/magrittin.html देखें

मैगिट्र ने कई अन्य ऐसे ऑपरेटरों को भी परिभाषित किया है। पूर्व लिंक जो की चर्चा के अतिरिक्त पाइप ऑपरेटर्स अनुभाग देखें %T>%, %<>%और %$%और http://cran.r-project.org/web/packages/magrittr/magrittr.pdf भी अधिक जानकारी के लिए।

dplyr dplyr आर पैकेज एक %.%ऑपरेटर को परिभाषित करने के लिए उपयोग किया जाता है जो समान है; हालाँकि, अब इसे हटा दिया गया है और dplyr ने अनुशंसा की है कि उपयोगकर्ता %>%magrittr से आयात करते हैं और dplyr उपयोगकर्ता को उपलब्ध कराते हैं। जैसा कि डेविड अर्नबर्ग ने टिप्पणियों में उल्लेख किया है कि यह एसओ प्रश्न इसके और मैग्रिट्र के बीच के अंतर पर चर्चा करता है %>%: % (% dplyr) और%>% (मैग्रीट्र) के बीच अंतर।

पाइपआर आर पैकेज, पाइपआर, एक %>>%ऑपरेटर को परिभाषित करता है जो मैग्रिट्र के%>% के समान है और इसे इसके विकल्प के रूप में इस्तेमाल किया जा सकता है। Http://renkun.me/pipeR-tutorial/ देखें

पाइपआर पैकेज ने कई अन्य ऐसे ऑपरेटरों को भी परिभाषित किया है। देखें: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf

पोस्टोलॉजिक पोस्टोलॉजिक पैकेज परिभाषित %if%और %unless%ऑपरेटर।

rpr द आर पैकेज, रैपराट, एक डॉट पाइप को परिभाषित करता है, %.>%जो इस बात का एक स्पष्ट संस्करण %>%है कि यह दलीलों का निहितार्थ नहीं करता है, लेकिन केवल दाहिने हाथ की तरफ डॉट के स्पष्ट उपयोग को प्रतिस्थापित करता है। इसे दूसरे विकल्प के रूप में माना जा सकता है %>%Https://winvector.github.io/wrapr/articles/dot_pipe.html देखें

विचित्र पाइप । यह वास्तव में एक पाइप नहीं है, बल्कि वास्तव में पाइप का उपयोग किए बिना पाइप के समान काम करने के लिए कुछ चतुर आधार सिंटैक्स है। इसकी चर्चा http://www.win-vector.com/blog/2017/01/use-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ में है कि विचार लिखने के बजाय:

1:8 %>% sum %>% sqrt
## [1] 6

एक निम्नलिखित लिखता है। इस स्थिति में हम डॉट तर्क का उपयोग करने के बजाय स्पष्ट रूप से डॉट का उपयोग करते हैं और पाइपलाइन के प्रत्येक घटक को चर के असाइनमेंट के साथ समाप्त करते हैं जिसका नाम डॉट ( .) है। हम एक अर्धविराम के साथ इसका पालन करते हैं।

1:8 ->.; sum(.) ->.; sqrt(.)
## [1] 6

एक्सपम पैकेज की अद्यतन जानकारी को जोड़ा और शीर्ष पर सरलीकृत उदाहरण दिया। जोड़ा गया पोस्टल पैकेज।


1
मैं यह भी देखता हूं:% <>%,% T>%,% $%, वे क्या करते हैं? rpackages.ianhowson.com/cran/magrittr/man/pipe.html
pluke

Magrittr को लोड करने के बाद R के भीतर से ?"%<>%", आदि का उपयोग करने में सहायता प्राप्त करें:
G. Grothendieck

17

G.Gththendieck द्वारा दिए गए लिंक को पढ़ने के बाद मेरी समझ यह है कि%>% एक ऑपरेटर है जो पाइप कार्य करता है। यह पठनीयता और उत्पादकता में मदद करता है क्योंकि इन पाइपों के माध्यम से कई फ़ंक्शन के प्रवाह का पालन करना आसान होता है जब कई फ़ंक्शन नेस्टेड होते हैं।


आपके द्वारा उल्लिखित फायदे यहां कोड उदाहरणों के साथ प्रदर्शित किए गए हैं
क्रिस्टोफर स्टीफन

9

%>%यूनिक्स में पाइप के समान है। उदाहरण के लिए, में

a <- combined_data_set %>% group_by(Outlet_Identifier) %>% tally()

के आउटपुट में combined_data_setजाएगा group_byऔर उसके आउटपुट में जाएगा tally, फिर अंतिम आउटपुट को सौंपा गया है a

यह आपको चर बनाने और मध्यवर्ती मूल्यों को संग्रहीत किए बिना श्रृंखला में कार्यों का उपयोग करने का आसान और आसान तरीका देता है।


-1

R संकुल dplyr और sf R% magrittr से ऑपरेटर%>% आयात करता है।

निम्नलिखित कमांड का उपयोग करके सहायता उपलब्ध है:

?'%>%'

बेशक, उदाहरण के लिए उपयोग करने से पहले पैकेज को लोड किया जाना चाहिए

library(sf)

मैग्रीट्रिट फॉरवर्ड-पाइप ऑपरेटर का प्रलेखन एक अच्छा उदाहरण देता है: जब कार्यों को केवल एक तर्क की आवश्यकता होती है, x%>% f, f (x) के बराबर होता है


1
इस तरह लगता है stackoverflow.com/a/27129032/570918 में पहले से ही अच्छी तरह से समझाया गया है ।
मर्व
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.