En una función, quiero calcular valores numéricos, darles nombres y devolver un orden NumericVector
en Rcpp. Puedo ordenar los vectores (usando esto ), pero el orden de los nombres de los valores sigue siendo el mismo.
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
Quiero que la función devuelva esto:
## a c b
## 1 3 5
¿Es posible? ¿Cómo puedo conseguir esto?
Respuestas:
Utilizando la sugerencia que Dirk dio en su comentario, descubrí que los nombres de
x
es solo otro vector. Entonces, busqué ordenar un vector usando otro vector. Usando esta respuesta SO, se me ocurren las siguientes dos soluciones:fuente