आर के भीतर लैम्बडास के वेक्टर को पास करना, rpois
को कई पोइसन वितरणों का वर्णन करने वाले लैम्बडास के वेक्टर को पारित किया जा सकता है, उदाहरण के लिएआरसीपीपी के आरओपीआई
rpois(5, (1:5)*1000)
# [1] 1043 1974 3002 3930 4992
ऊपर, उत्पादन वेक्टर के प्रत्येक तत्व 1000, 2000, 3000, 4000 और 5000 में क्रमश: के साधन के साथ एक अलग प्वासों बंटन से ली गई है,।
तो मेरे पास है एक arma::mat
(इन का उपयोग कर, क्योंकि कहीं और मैं क्यूब्स उपयोग कर रहा हूँ) प्वासों वितरण के lambdas युक्त, क्या Rcpp भीतर rpois
करने के लिए इन (एक समय में एक पंक्ति) पारित करने के लिए सबसे अच्छा तरीका है?
यहाँ एक खिलौना उदाहरण है, और आगामी त्रुटि संदेश से एक अंश:
library(inline)
library(RcppArmadillo)
code <- "
using namespace Rcpp;
using namespace arma;
arma_rng::set_seed(42); // Dirk's seed of choice
mat lam = randu(5, 5); // ignore the fact these are all 0-1
mat out(5, 5);
for (int i = 0; i < 5; i++) {
out.row(i) = rpois(5, lam.row(i));
}
return(wrap(out));
"
f <- cxxfunction(body=code, plugin="RcppArmadillo")
# cannot convert 'arma::subview_row<double>' to 'double' for argument '2'
# to 'Rcpp::NumericVector Rcpp::rpois(int, double)'
मैं ग में जैसे रूपांतरण की मेरी समझ स्वीकार करना होगा ++ काफी खराब है। क्या मैं संभव करने की कोशिश कर रहा हूं (मेरा अनुमान नहीं है, क्योंकि ऐसा लगता है कि rpois
एक डबल की उम्मीद कर रहा है), या क्या मुझे मैट्रिक्स के प्रत्येक सेल पर पुनरावृत्ति करने की ज़रूरत है, जिससे हर बार एक विचलन उत्पन्न होता है?
एक बहुत ही उपयोगी उत्तर, धन्यवाद। और ऑनलाइन 'आरसीपीपी मैनुअल' खोजने के बारे में एक महान युक्ति। मैंने अब आपके सुझाए गए दृष्टिकोण को लागू किया है और यह ठीक काम कर रहा है :)। – jbaums