density(), with argument of length 1 (PR#2593)
u9801539@leonard.anu.edu.au writes:
The following is from version 1.6.2 of R under Windows, or 1.6.1 under Mac OSX/X11
density(1)
Error in if (!(lo <- min(hi, IQR(x)/1.34))) (lo <- hi) || (lo <- abs(x[1])) || :
missing value where logical needed
I am not sure how this should be handled.
It comes from this bit of code:
bw.nrd0
function (x)
{
hi <- sd(x)
if (!(lo <- min(hi, IQR(x)/1.34)))
(lo <- hi) || (lo <- abs(x[1])) || (lo <- 1)
0.9 * lo * length(x)^(-0.2)
}
in which hi is NA if x has length 1. A pragmatic way out would seem to
be to change the first line to
hi <- if (length(x) > 1) sd(x) else 0
(and I wonder why the author didn't go all the way with the ||
sneakiness and said
(lo <- min(hi, IQR(x)/1.34)) ||
(lo <- hi) || (lo <- abs(x[1])) || (lo <- 1)
)
O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907