假设我有以下列表:
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);
}
有什么想法吗?
答案 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;