2011-01-28 14 views
8

दोस्तों, सामान्य रूप से जब आप की तरह कुछ कार्य करें:rollapply "बढ़ रही है" खिड़की

tmp = zoo(rnorm(100), 1:100) 
rollapply(tmp, 10, function(x) quantile(x, 0.05), align="right") 

काफी ठीक ही rollapply पल 10 तत्वों उपलब्ध हैं से मूल्य की गणना शुरू कर देंगे।

दुर्भाग्यवश मुझे ऐसी चीज की आवश्यकता है जो मुट्ठी 10 अवलोकनों के लिए जितना संभव हो उतना डेटा का उपयोग करे, अनिवार्य रूप से डेटा की एक बढ़ती खिड़की जब तक स्लाइडिंग विंडो का उपयोग करने के लिए पर्याप्त डेटा न हो, उदा। 1, 1: 2, 1: 3, 1: 4, आदि। जब तक हमारे पास कम से कम 10 तत्व नहीं होते हैं और फिर विंडो को सामान्य रूप से स्लाइड करते हैं।

क्या लूप के लिए बदसूरत से ऐसा करने का कोई बेहतर तरीका है?

उत्तर

4

शुरुआत में 9 एनएएस के साथ श्रृंखला को पैड क्यों न करें? "लूप्स के लिए बदसूरत" से निश्चित रूप से बेहतर:

tmp = zoo(c(rep(NA,9), rnorm(100)), 1:109) 
zoo(rollapply(tmp, 10, function(x) quantile(x, 0.05, na.rm = TRUE), 
       align="right"), 1:100) 
10

rollapply चिड़ियाघर में partial=TRUE निर्दिष्ट करके ऐसा कर सकता है, उदा।

> library(zoo) 
> 
> rollapplyr(zoo(1:20), 3, sum, partial=TRUE) 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
1 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 
+0

'रोलप्ली' फ़ंक्शन परिभाषा की तरह लगता है। फ़ंक्शन कॉल अब दिखना चाहिए - 'रोलप्ली (1:20, 3, FUN = sum, align = "right", आंशिक = TRUE) ' – steadyfish

+0

धन्यवाद। तय किया है –

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