2017-06-22 81 views
0

我注意到,從RCPP獨特功能對結果進行排序RCPP獨特的順序輸出

evalCpp("unique(IntegerVector::create(6,6,1,5,5,1))") 
[1] 6 5 1 
unique(c(6,6,1,5,5,1)) 
[1] 6 1 5 

是否有辦法避免這種情況? 感謝您的幫助

回答

1

如果你看看(短)源文件,你會發現它使用了一個內部類IndexHash。我懷疑這個默認排序。

如果原始訂單是最重要的,我想你可以寫一個新的便利包裝。它不會很難:浪費幾個字節的內存,分配一個臨時的邏輯向量,使用標準的HashMap並循環傳入的向量。對於每個值,詢問哈希映射是否已經看到這個值,存儲布爾答案。然後用它來索引原始矢量。

這是甚至實施的地方。還要看看Armadillo和Eigen的實用功能。

+0

謝謝你的這些細節。其實我意識到在我的例子中最簡單的方法是調用Rcpp程序中的R獨特函數! – user3507085