coercing NA to complex?
On Mon, May 08, 2000 at 10:22:11AM +1000, John Peters wrote:
I struck a problem concatenating two complex vectors with an NA for
plotting purposes. It seems that NA is not automatically coerced to mode
complex. In the complex vector "b" below, an NA appears after half the
vector, and a zero appears where the NA should be:
3+4i 3+4i NA 3+4i 0+0i 3+4i 3+4i 3+4i 3+4i 285
This zero seems to coming from free space, as, after running this example
a few times, the zero gets replaced by some sort of erratic garbage:
3+4i 3+4i NA 3+4i 2.466318e+179+6.800902e+199i 3+4i 3+4i 3+4i 3+4i 292
Is this a misuse of c() and NA or a bug? It runs OK in Splus 3.4.
Observed on R 1.0.1 on both linux (compiled on RedHat 6.2) and win95
(rw1001).
#---------------------------------------------------------------------
a_rep(3+4i,4)
for (i in 1:1000){
b_c(a,NA,a) # b is wrong
# b_c(a,as.complex(NA),a) # b is ok
cat(b,i,"\n")
x_max(c(1,Mod(b[5])),na.rm=T)
if (x>2) stop()
}
#---------------------------------------------------------------------
Thanks for R; this is my first surprise for many months.
Thanks for the bug report! Access to cut-and-paste makes it all too
easy to avoid thinking about what you are doing.
I am committing a fix to the development tree, but if it is an urgent
problem for you, please replace the "default" case in the function
"ComplexAnswer" in src/main/bind.c with the following:
default:
n = LENGTH(x);
for (i = 0; i < n; i++) {
xi = INTEGER(x)[i];
if (xi == NA_INTEGER) {
COMPLEX(ans_ptr)[ans_length].r = NA_REAL;
COMPLEX(ans_ptr)[ans_length].i = NA_REAL;
}
else {
COMPLEX(ans_ptr)[ans_length].r = xi;
COMPLEX(ans_ptr)[ans_length].i = 0.0;
}
ans_length++;
}
break;
Ross
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._