作者:手机用户2502886335 | 来源:互联网 | 2022-12-06 17:32
1> F. Privé..:
我会用这个:
template
Vector cummin_cpp2(Vector x, bool narm){
Vector res = clone(x);
int i = 1, n = res.size();
T na;
if(narm){
// Ignore NAs
for(; i (x, narm);
case REALSXP: return cummin_cpp2(x, narm);
default: Rcpp::stop("SEXP Type Not Supported.");
}
}
试试这个:
x <- c(NA, 7, 5, 4, NA, 2, 4)
x2 <- as.integer(x)
cummin_cpp(x, narm = TRUE)
x
cummin_cpp(x2)
x2
x <- c(NA, 7, 5, 4, NA, 2, 4)
x2 <- as.integer(x)
x3 <- replace(x, is.na(x), NaN)
cummin_cpp2(x, narm = TRUE)
x
cummin_cpp2(x2)
x2
cummin_cpp2(x3)
x3
说明:
Joran的建议很好,只需将其包装在R函数中即可
约瑟夫伍德建议我使用调度员
请注意,它x
是通过引用传递的,如果与您声明的类型相同,则会被修改(请参阅这2张幻灯片)
您需要处理NA
以及NaN
如果为真,则可以使用||
而不是|
仅评估第一个条件.