从Rcpp中的列表中删除元素

时间:2014-09-17 02:51:48

标签: r 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 个答案:

答案 0 :(得分:3)

怎么样?
// [[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;