假设我有以下列表:
在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);
}
任何想法?
x[idx != j]
。对于我的问题,我正在寻找一个更通用的解决方案。我想在函数内部使用 if-else 语句来决定j
,并且可能需要删除许多元素。例如,我可能希望删除所有长度为2的列表元素。 - HBatx[!sapply(x, !isLengthTwo)]
,其中isLengthTwo
是一个接受SEXP
并返回bool
的函数。通常情况下,您可以使用x[sapply(x, f)]
,其中f
是您选择的某个函数/函数对象。 - Kevin Ushey