समारोह पहली बार एक तर्क के रूप में एक dataframe लेता है, तो आप सरल यह अंत में जोड़ सकते हैं।
> inc <- function(x) x + 1
> 1 %>% inc(.) %>% sqrt(.) %>% log(.)
[1] 0.3465736
और कुछ उपयोगी magrittr
उपनाम के साथ:
library(magrittr)
set.seed(1)
inTrain <- sample(1:nrow(mtcars), 20)
mtcarsTest <- mtcars %>% extract(-inTrain,)
summaryPipe <- function(x) {print(summary(x)); x}
mtcars %>%
extract(inTrain,) %>%
# Train lm
lm(mpg ~ ., .) %>%
# Print summary and forward lm results
summaryPipe %>%
# Predict on the test set
predict(newdata = mtcarsTest) %>%
# Print results and forward arguments
print %>%
# Compute RMSE
subtract(mtcarsTest %>% extract2('mpg')) %>%
raise_to_power(2) %>%
mean %>%
sqrt
> myFunc <- function(x) sapply(x, max)
> mtcars %>% filter(mpg > 20) %>% myFunc()
mpg cyl disp hp drat wt qsec vs am gear
33.900 6.000 258.000 113.000 4.930 3.215 22.900 1.000 1.000 5.000
carb
4.000
यह लायक उल्लेख नहीं है कि magrittr::%>%
जो किसी भी तर्क के साथ dplyr
काम करता है के द्वारा प्रयोग किया जाता है ताकि आप आसानी से कुछ इस तरह कर सकते हैं
शायद यह स्वाद का विषय है लेकिन व्यक्तिगत रूप से मुझे यह उपयोगी लगता है।
टिप्पणियों में उल्लिखित @ बॉन्डडडस्ट के रूप में %>%
पर फ़ंक्शन पास करने के तीन संभावित तरीके हैं। डॉट प्लेसहोल्डर के साथ आप पहले की तुलना में एक अलग स्थिति पर एलएचएस का उपयोग कर सकते हैं (lm
कॉल देखें)।
गुजर का एक सबसेट लागू करने के लिए मैं कितना नहीं जानता कि यह इस मामले में मायने रखता है, लेकिन उस उदाहरण समारोह के शरीर में 'लागू' कॉल के बजाय 'लापली (एक्स, अधिकतम)' का उपयोग करना अधिक कुशल हो सकता है। यदि आपने '%>% myFunc (।)' या केवल '%>% myFunc' के साथ किया है तो यह बेहतर दिखाई दे सकता है। मेरी आंखों के लिए, एक खाली तर्क सूची को देखते हुए पता चलता है कि कुछ भी संसाधित नहीं किया जा रहा है, लेकिन शायद यह सिर्फ एक सौंदर्य क्विबल –
'लागू' आउटपुट कॉपी और पेस्ट करना आसान है, लेकिन निश्चित रूप से आप सही हैं। – zero323
ठीक है, तो यदि आप वेक्टर परिणाम चाहते हैं तो 'sapply' का उपयोग करें। आर के शुरुआती उपयोगकर्ता हमेशा 'लागू' के लिए पहले ही पहुंच रहे हैं, और उन्हें या तो चेतावनी दी जानी चाहिए कि अक्सर अनचाहे परिणाम होते हैं –