आर उपयोग कर के लाभ में से एक अपने vectorization जिसका अर्थ है कि यह आसानी से संचालन एक पूरे वेक्टर पर एक ही बार में नहीं बल्कि प्रत्येक तत्व लूप करने के लिए की तुलना में प्रदर्शन कर सकते हैं है।
डेविड Arenburg एक में उल्लेख किया
practice[-1]/head(practice, -1) - 1
यह क्या करता है
: टिप्पणी (BondedDust और डोमिनिक Comtois के लिए अद्यतन धन्यवाद के साथ), आपके मामले में आप कर सकते हैं यह करने के?
practice[-1]
पहले तत्व को छोड़कर पूरे वेक्टर का संदर्भ देता है।
> practice[-1]
[1] 2 10 15 17 1 2 4
इसी प्रकार, head(practice, -1)
अंतिम तत्व को छोड़कर पूरे वेक्टर का संदर्भ देता है।
> head(practice, -1)
[1] 1 2 10 15 17 1 2
हम इन विभाजित है, तो हम तत्व इससे पहले आने से विभाजित मूल सदिश में प्रत्येक तत्व से मिलकर एक सदिश मिलता है। हम इन वेक्टरों को सीधे विभाजित कर सकते हैं क्योंकि विभाजन एक वेक्टरकृत ऑपरेशन है।
> practice[-1]/head(practice, -1)
[1] 2.0000 5.0000 1.5000 1.1333 0.0588 2.0000 2.0000
> # ^ ^ ^ ^ ^ ^ ^
> # 2/1 10/2 15/10 17/15 1/17 2/1 4/2
जैसा कि आपके उदाहरण में है, हम अंत में 1 घटा सकते हैं।
> practice[-1]/head(practice, -1) - 1
[1] 1.0000 4.0000 0.5000 0.1333 -0.9412 1.0000 1.0000
यह इसके बाद से वेक्टर में प्रत्येक तत्व के लिए लागू किया जाता है भी आर
में एक vectorized आपरेशन
कोई आवश्यक लूप है!
बराबर पाश कोड इस होगा:
x <- NULL
for (i in 1:(length(practice) - 1)) {
x[i] <- practice[i + 1]/practice[i] - 1
}
x
[1] 1.0000 4.0000 0.5000 0.1333 -0.9412 1.0000 1.0000
कि भी आप हो जाता है जब आप क्या चाहते हैं, यह स्पष्ट रूप से एक बहुत लंबे समय तक है। असल में, कई मामलों में समकक्ष लूप कोड भी काफी धीमा है, क्योंकि लूप प्रत्येक पुनरावृत्ति पर बहुत अधिक सामान के आसपास ले जाते हैं। तो अपने कोड को सरल बनाने के अलावा, वेक्टरनाइज़ेशन अक्सर इसे गति में भी मदद करेगा।
कृपया अपने सिर से शापित लूप बाहर निकालें। हम आर में 99% समय में उनका उपयोग नहीं करते हैं। बस अभ्यास करें [-1 एल]/अभ्यास [-लेथेंथ (अभ्यास)] - 1 एल' –
एक प्रश्न आप परिभाषित कर सकते हैं कि -1 एल क्या है। क्या आप उपरोक्त एल को वेक्टर की लंबाई के रूप में परिभाषित करेंगे या क्या इसका आर में एक विशिष्ट अर्थ है? – user3549613
'1L' एक लंबा है, यानी 1 एक पूर्ण पूर्णांक के रूप में। –