当使用C时,在R向量中检测和分配NA值

  • 本文关键字:分配 NA 向量
  • 更新时间 :
  • 英文 :


我使用R的。call接口到C传递和返回实值向量(REALSXP),其中可能包括NA值。对于传入C的向量,我需要检测NA值的存在性,对于从C返回的向量,我需要分配NA值。

假设vec是一个SEXP对象,它等于一个包含REALSXP对象的向量。例如,如果在C中分配这个,代码可能是

SEXP vec;
PROTECT(vec = allocVector(REALSXP, 10));

关于检测NA值,我知道以下操作将起作用:

isnan(vec[index])

其中isnan()math.h中定义。这是检测NA值的首选方法吗?

我不知道如何分配NA值。我知道我可以做如下的事情,

vec[index] = 0.0/0.0;

分配NaN。我不确定NaN和NA在R中的确切区别是什么,但我更愿意分配NA而不是NaN。

编辑

找到了答案。函数ISNA()ISNAN()在R_ext/arithp .h中定义,符号R_NaReal也在R_ext/arithp .h中定义,用于指定NA值

找到我问题的答案了。函数ISNA()ISNAN()在R_ext/arithp .h中定义,符号R_NaReal也在R_ext/arithp .h中定义,用于指定NA值

最新更新