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
是否有辦法避免這種情況? 感謝您的幫助
我注意到,從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
是否有辦法避免這種情況? 感謝您的幫助
如果你看看(短)源文件,你會發現它使用了一個內部類IndexHash
。我懷疑這個默認排序。
如果原始訂單是最重要的,我想你可以寫一個新的便利包裝。它不會很難:浪費幾個字節的內存,分配一個臨時的邏輯向量,使用標準的HashMap並循環傳入的向量。對於每個值,詢問哈希映射是否已經看到這個值,存儲布爾答案。然後用它來索引原始矢量。
這是甚至實施的地方。還要看看Armadillo和Eigen的實用功能。
謝謝你的這些細節。其實我意識到在我的例子中最簡單的方法是調用Rcpp程序中的R獨特函數! – user3507085