从 Rcpp 中的列表中删除元素

标签 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);
}

有什么想法吗?

最佳答案

怎么样

// [[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;

关于从 Rcpp 中的列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881508/

相关文章:

css - R:Shiny:如何在shinyapp中将gvisTable与中心对齐

r - rpart 的混淆矩阵

r - 在 Rcpp 中查找向量中所有最大/最小值的索引

c++ - RccpArmadillo 和 RccpGSL 未在 Windows 的 RStudio 中加载

r - 标题中单个单词的颜色与组的颜色相匹配

R Shiny : Using numeric output variable as the initial value of slider

r - 如何更新 .RData?

c++ - 是否可以将矩阵列表传递给 vector<Eigen::Map<Eigen::MatrixXd>> 内联?

r - Rcpp 中许多对象的交错结果

r - Shiny 的服务器发生错误加载命名空间没有包rcpp但安装了rcpp并在R作品中加载 Shiny