Wednesday 15 May 2013

Replacing outer and rowSums in R -


तीन इनपुट वैक्टर को देखते हुए v , a , m और निम्नलिखित फ़ंक्शन:

  f1 & lt; - फ़ंक्शन (v, m, a) {o = बाहरी (m, v, "& gt;") पंक्ति सफ़ (टी (टी (ओ) * ए))}   

जो मैं और अधिक कुशलता से लिखना की कोशिश कर रहा हूँ। यहाँ मेरा प्रयास है:

  f2 & lt; - फ़ंक्शन (v, m, a) {vm = c (m, v) अनुक्रमणिका = c (प्रतिनिधि (0, लंबाई (मी)), प्रतिनिधि (1, लंबाई (वी))) सूचकांक = सूचकांक [ऑर्डर (वीएम)] cumsum1 = cumsum (index1) r = cumsum1 [अनुक्रमणिका 1 == 0] cumsum.a = cumsum (ए) cumsum.a [r]} < / Code>  

दोनों फ़ंक्शंस निम्न इनपुट के लिए समान परिणाम देते हैं:

  v = c (0, 0.11, 0.17, 0.31, 0.63) a = c (11.41) , 9.40, 7.11, 2.80, 0.27) एम = सी (0.03, 0.097, 0.14, 0.1 9, 0.26, 0.31, 0.46, 0.63, 1.13) एफ 1 (वी, एम, ए) # [11] 11.41 11.41 20.81 27.92 27.92 27.92 30.72 30.72 30.9 9 एफ 2 (v, m, a) # [11] 11.41 11.41 20.81 27.92 27.92 27.92 30.72 30.72 30.9 9   

लेकिन इसके लिए नहीं:

  w = सी (0.07, 0.21, 0.30, 0.62, 1.63) एफ 1 (डब्ल्यू, एम, ए) # [1] 0.00 11.41 11.41 11.41 20.81 27.92 27.92 30.72 30.72 एफ 2 (डब्ल्यू, एम, ए) # [1] 11.41 11.41 11.41 20.81 27.92 27.92 30.72 30.72   

क्या आप मुझे F2 को ठीक करने में मदद कर सकते हैं, इसलिए यह इनपुट के दोनों सेटों के लिए f1 के समान परिणाम देता है?

यह काम करता है:

  f1 & lt; - फ़ंक्शन (w, m, a) {o & lt; - बाह्य (m, w," & gt; ") rowSums (t (टी (ओ) * ए))} एफ 2 और एलटी; - फ़ंक्शन (डब्लू, एम, ए) {एमएमटीटीसी - सी (एम, डब्ल्यू) इंडेक्स & एलटी; - सी (रिप (0, लम्बाई (एम)), प्रतिनिधि (1, लम्बाई (डब्ल्यू))) इंडेक्स 2 & लेफ्टिनेंट; इंडेक्स [ऑर्डर (डब्लूएम)] सीम्सम 2 और एलटी; - सीम्सम (इंडेक्स 2) आर 1 एंड एलटी; - सीम्सम 2 [इंडेक्स 2 == 0] सीम्सम (सी (0, ए)) [आर 1 + 1]} v & lt; -c (0, 0.11, 0.17, 0.31, 0.63) w & lt; -c (0.07, 0.21, 0.30, 0.62, 1.63) एक & lt; -c (11.41, 9.40, 7.11, 2.80, 0.27) एम एंड एलटी; - c (0.03, 0.097, 0.14, 0.19, 0.26, 0.31, 0.46, 0.63, 1.13) समान (एफ 1 (वी, एम, ए), एफ 2 (वी, एम, ए)) # [1] सही समान (एफ 1 (डब्ल्यू, एम, ए), एफ 2 (डब्ल्यू, एम, ए)) # [1] TRUE    

No comments:

Post a Comment