के साथ विधि चेनिंग आर में कार्यों को श्रृंखला करना संभव है?आर
नमूना डेटा:
m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
उदाहरण के लिए, मैं नीचे निम्नलिखित बयानों को बदलने के लिए करना चाहते हैं:
step1 <- mean(m)
step2 <- sum(step1)
res <- step2
या,
res <- sum(mean(m))
कुछ इस तरह है:
res <- [email protected]()@sum()
कुछ मामलों में, यह मेरे कोड को काफी स्पष्ट करेगा।
EDIT1 यह एक डमी उदाहरण है। मैंने यादृच्छिक रूप से 'योग' और 'माध्य' चुना।
बेन जवाब का पहला टुकड़ा दे दी है लेकिन का उपयोग कर% @%, यह काम करता है के भीतर अतिरिक्त तर्कों का उपयोग करने से रोकता है:
m %@% function1(arg1, arg2) %@% function2(arg1, arg2)
मुझे लगता है कि चारों ओर कैसे काम कर सकते हैं?
EDIT2 एक उदाहरण
require(xts)
require(PerformanceAnalytics)
xts.ts <- xts(rnorm(231),as.Date(13514:13744,origin="1970-01-01"))
plot(na.omit(lag(rollapply(xts.ts, width=rolling.per-1, FUN= function(x){sqrt(var(x))*sqrt(252)}), k=1)), main = "Dummy Example")
यह उदाहरण चार्ल्स समाधान के साथ ठीक से काम करने लगता है जोड़ना:
`%@%` <- function(x, f) eval.parent(as.call(append(as.list(substitute(f)), list(x), 1)))
xts.ts %@% rollapply(width = rolling.per-1, FUN= function(x) x%@%var%@%sqrt * sqrt(252)) %@% lag(k=1) %@% na.omit %@% plot(main = "Dummy Example")
कम मेरे मामले के लिए महत्वपूर्ण है, लेकिन woth उल्लेख है, तो निम्न बयान चार्ल्स के समाधान के साथ विफल रहता है :
xts.ts %@% names <- 'ts name'
'res <- sum (mean (m)) 'में क्या गलत है? –
कुछ भी नहीं, लेकिन यह लंबाई 1 वेक्टर के 'योग' को लेने के लिए बहुत अधिक समझ में नहीं आता है (जिसे मैट्रिक्स पर 'माध्य' द्वारा वापस किया जाता है)। – Henrik
हालांकि यह "जल्द ही" जा रहा है, फिर भी एक 'mean.data.frame' फ़ंक्शन है जो एक वेक्टर लौटाता है। –