में बार तर्क के साथ पुन: प्रजनन आर प्रतिनिधि मैं आरसीपीपी का उपयोग करना सीख रहा हूं। मैं आर 12+ में rep
फ़ंक्शन को दोहराने के लिए सी ++ का उपयोग करना चाहता हूं। आर में कई rep
के साथ कई चीनी फ़ंक्शन शामिल हैं (पृष्ठ 3 के नीचे देखें: http://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-quickref.pdf। जैसा कि मैं प्रलेखन को समझता हूं, चीनी कार्य rep
, rep_each
, और rep_len
दो तर्क लेते हैं - एक वेक्टर और एक पूर्णांक। हालांकि, मैं rep
की कार्यक्षमता को दोहराता हूं जब मैं times
तर्क का उपयोग करता हूं। उस स्थिति में, आप दो वैक्टरों की आपूर्ति कर सकते हैं। आर:सी ++ और आरसीपीपी
x <- c(10, 5, 12)
y <- c(2, 6, 3)
rep(x, times = y)
[1] 10 10 5 5 5 5 5 5 12 12 12
इस प्रकार times
तर्क के साथ rep
+०१२३९३१०१०८६ के प्रत्येक तत्व प्रतिकृतिसंबंधित y
मान के रूप में कई बार। जैसा कि मैं इसे समझता हूं, मैं इसके लिए आरसीपीपी चीनी कार्यों का उपयोग करने का कोई तरीका नहीं देख सकता।
// [[Rcpp::export]]
NumericVector reptest(NumericVector x, NumericVector y) {
int n = y.size();
NumericVector myvector(sum(y));
int ind = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < y(i); ++j) {
myvector(ind) = x[i];
ind = ind + 1;
}
}
return myvector;
}
x <- c(10, 5, 12)
y <- c(2, 6, 3)
reptest(x, y)
[1] 10 10 5 5 5 5 5 5 12 12 12
यह थोड़ा आर में rep
की तुलना में धीमी मैं अगर वहाँ वैसे भी है इस तेजी लाने के लिए या सोच रहा हूँ अगर किसी को भी एक बेहतर विचार है:
मैं निम्नलिखित सी ++ समारोह है कि काम करता है बनाया है। जैसा कि मैं इसे समझता हूं, rep
सी कोड को कॉल कर रहा है, इसलिए शायद rep
पर सुधार करना असंभव होगा। मेरा लक्ष्य एक एमसीएमसी पाश को गति देना है (जो rep
फ़ंक्शन का उपयोग करता है) जो आर में चलाने के लिए बहुत समय लगता है, इसलिए कोई भी गति उपयोगी होगी। एमसीएमसी पाश के अन्य भाग धीमे भाग हैं, rep
नहीं, लेकिन मुझे अपने लूप में एक ही कार्यक्षमता की आवश्यकता है। यह इसकी गति बढ़ाने के लिए
सुनिश्चित नहीं हैं कि अगर उपयोगी है, लेकिन यहां 'rep' स्रोत कोड के लिए एक कड़ी है। ऐसा लगता है कि यह 'सी' में है। https://github.com/wch/r-source/blob/ed415a8431b32e079100f50a846e4769aeb54d5a/src/main/seq.c –
बहुत * बहुत * पहली त्वरित नज़र, यह ठीक दिखता है। आप अधिक यथार्थवादी आकारों पर बेंचमार्क करना चाहते हैं। –