Удаление элемента из списка в Rcpp
Предположим, у меня есть следующий список:
x <- list(a = c(1, 2), b = c("a", "c"), c = 1:10)
В R я могу удалить первый элемент, используя следующие два метода:
x[-1]
x[1] <- NULL
Я пытаюсь сделать то же самое в Rcpp, но я не могу понять это. Следующий код просто присваивает NULL
к первому элементу.
// [[Rcpp::export]]
Rcpp::List removeElement(Rcpp::List x)
{
x[0] = R_NilValue;
return(x);
}
Есть идеи?
1 ответ
Решение
Как насчет
// [[Rcpp::export]]
Rcpp::List removeElement(Rcpp::List x, int j)
{
IntegerVector idx = seq_len(x.length());
return(x[idx != j]);
}
Или, если вы хотите, чтобы индексы начинались с 0, используйте
IntegerVector idx = seq_len(x.length()) - 1;