热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Rcpp重写R的cummin()函数并允许NA

如何解决《使用Rcpp重写R的cummin()函数并允许NA》经验,为你挑选了1个好方法。



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

    如果为真,则可以使用||而不是|仅评估第一个条件.


推荐阅读
author-avatar
手机用户2502886335
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有