Em uma função, desejo calcular valores numéricos, atribuir nomes a eles e retornar um ordenado NumericVector
em Rcpp. Posso classificar os vetores (usando isso ), mas a ordem dos nomes dos valores permanece a mesma.
library(Rcpp)
x <- c(a = 1, b = 5, c = 3)
cppFunction('
NumericVector foo(NumericVector x) {
std::sort(x.begin(), x.end());
return(x);
}')
foo(x)
## a b c
## 1 3 5
Eu quero que a função retorne isso:
## a c b
## 1 3 5
É possível? Como posso conseguir isso?
Respostas:
Usando a dica que Dirk deu em seu comentário, descobri que o nome de
x
é apenas mais um vetor. Então, procurei classificar um vetor usando outro vetor. Usando esta resposta SO, eu proponho duas soluções a seguir:fonte