【发布时间】:2020-04-14 10:29:09
【问题描述】:
我想编写一个带有 NumericMatrix 参数的 Rcpp 函数。如果任何矩阵元素为 NA,则返回 true,否则返回 false。我尝试在所有列上循环 is_na,但我正在寻找一种更简洁的方法。我也担心速度。
bool check(NumericMatrix M){
n=M.ncol();
for(int i=0; i < n; i ++){
if(is_na( M(_,i) ){ return T;}
}
return F;
}
【问题讨论】:
-
矢量化 R 运算速度很快。尝试 R 中的
any(is.na(M))并对其进行分析。 -
你是对的。现在,此检查功能旨在用于更大的 Rcpp 功能。将 any(is.na(M)) 传输到 Rcpp 的好方法是什么?通过列循环 is_na 是要走的路吗?
-
你找到 Rcpp 糖功能并在那里检查了吗?你可能会喜欢你发现的东西(我们有一个小优势,像
any(...)这样的运算符可以在第一个TRUE退出。R 将始终运行完整的向量......