在下面的代碼中,我試圖從正態分佈中生成一個值爲NumericVector
的值,其中每次調用rnorm()
時每次都有不同的均值和方差。將長度爲1的NumericVector的rnorm輸出轉換爲double?
下面是代碼:
// [[Rcpp::export]]
NumericVector generate_ai(NumericVector log_var) {
int log_var_length = log_var.size();
NumericVector temp(log_var_length);
for(int i = 0; i < log_var_length; i++) {
temp[i] = rnorm(1, -0.5 * log_var[i], sqrt(log_var[i]));
}
return(temp);
}
那是給我找麻煩該生產線是這一個:
temp[i] = rnorm(1, -0.5 * log_var[i], sqrt(log_var[i]));
它會導致錯誤:
assigning to 'typename storage_type<14>::type' (aka 'double') from incompatible type 'NumericVector' (aka 'Vector<14>')
因爲我m從rnorm
返回一個號碼,有沒有辦法將此轉換成NumericVector
返回t ype到double
?
非常好!謝謝你的洞察力。我其實是想出了你的選項2,但選項1給了我一些關於我的代碼的其他部分的想法!我很好奇,爲什麼你說第一個選項會更快? –
**選項2 **創建一個新的'NumericVector',通過調用** Option 1 **來填充它,然後需要子集操作。 – coatless
謝謝你的解釋。你能告訴我爲什麼你的Option 1 rnorm只有兩個參數嗎?爲什麼第一個參數中沒有1?同樣,你能指出我使用R ::的好資源的方向嗎? –