Tom Mulholland
2004-Jun-09 06:58 UTC
[R] Help with a Lattice plot that fails with an empty unique combination
While using Lattice I received the following error. Error in if (xx != 0) xx/10 else z/10 : argument is of length zero In addition: Warning messages: 1: is.na() applied to non-(list or vector) in: is.na(x) 2: is.na() applied to non-(list or vector) in: is.na(x) 3: no finite arguments to min; returning Inf 4: no finite arguments to max; returning -Inf 5: NaNs produced in: log(x, base) Can anyone point me in the right direction. I have included a reproducible example from part of the data. The problem appears to be the lack of data in column POH which I can see when I cross tab the data xtabs(IWD ~ about + SOA,data=test1) (from the dummy example below) SOA about ARON CRDA DCJH DJKT DEGF DOPC FACO FRNE HHW MEPR NGA OTHE OTRE JHG POH non-I NO G 0 1 0 0 443 0 2 172 486 96 73 233 217 408 0 I NO G 1 0 0 0 251 0 0 15 545 29 0 8 698 207 0 non-I ERT 0 435 153 66 152 17 15 7 85 233 32 15 147 216 0 I ERT 12 1 0 0 227 0 0 2 234 98 0 5 211 17 0 SOA about PKJI SPOC YTGB SUCH non-I NO G 527 1 945 160 I NO G 555 0 135 45 non-I ERT 556 0 805 1 I ERT 592 0 205 224>I normally subset data and drop unused factors at that stage. But my investigations during the creation of this sample, especially when I was creatiing the dummy dataset and found that i needed to isolate the problem before I could create one that would duplicate the problem, indicate that it was not just one NA doing the damage. I replaced all the NAs in the IWD with 1s and it still did not work, because the relevvent SOA varaibles were also NA. Aha, I thought, time to reread the lattice documentation to see what I have missed (it will probably be in there and I've missed it, but that's another story.) I noted the subset option but I can't see how one would filter out the specific variations that need to be dropped. Here's my sample to replicate the problem. test1 <- structure(list(IWD = c(5, 3, 15, 2, 40, 1, 20, 40, 45, 50, 35, 33, 33, 3, 50, 14, 139, 139, 13, 3, 1, 1, 127, 1, 14, 1, 4, 3, 3, 3, 3, 3, 21, 51, 35, 33, 11, 11, 11, 6, 1, 7, 6, 8, 1, 1, 1, 4, 14, 6, 3, 34, 25, 3, 34, 1, 10, 14, 7, 35, 4, 13, 7, 45, 13, 7, 45, 13, 7, 45, 13, 7, 45, 13, 7, 7, 45, 13, 3, 13, 106, 4, 9, 1, 7, 40, 20, 24, 12, 2, 7, 1, 7, 6, 30, 18, NA, 2, 2, 4, 17, 4, 48, 4, 4, 1, 29, 17, 29, 2, 4, 6, 12, 3, 2, 17, 23, 65, 65, 6, 2, 23, 5, 2, 1, 4, 4, 4, 64, 24, 4, 47, 1, 44, 17, 24, 25, 57, 9, 27, 19, 7, 1, 1, 1, 4, 23, 8, 10, 10, 19, 21, 19, 21, 17, 9, 25, 12, 65, 10, 2, 2, 12, 1, 1, 19, 19, 19, 84, 6, 4, 84, 1, 7, 3, 16, 2, 84, 4, 1, 1, 1, 28, 1, 65, 10, 10, 10, 9, 8, 32, 32, 1, 15, 9, 4, 17, 3, 3, 6, 1, 12, 12, 16, 18, 17, 1, 61, 3, 3, 3, 3, 7, 1, 2, 13, NA, 49, 155, 31, 1, 43, 3, 10, 32, 65, 17, 287, 7, 55, 12, 2, 1, 12, 12, 12, 13, 43, 43, 8, 34, 14, 4, 14, 4, 32, 36, 12, 21, 13, 6, 6, 6, 6, 6, 16, 25, 25, 3, 4, 1, 1, 65, 54, 54, 72, 25, 36, 3, 26, 26, 3, 13, 111, 26, 13, NA, NA, 3, 1, 12, 1, 1, 22, 1, 25, 64, 72, 72, 1, 22, 2, 12, 3, 13, 139, 7, 1, 16, 115, 11, 54, 11, 49, 4, 1, 1, 1, 7, 11, 3, 2, 157, 4, 4, 9, 3, 15, 15, 9, 4, 19, 53, 53, 60, 221, 107, 107, 53, 3, 7, 173, NA, NA, 31, 38, 38, 74, 14, NA, NA, 92, 53, 14, 107, 107, 15, 38, 14, 53, 74, 47, 47, 7, 3, 49, 42, 74, 33, 3, 8, 4, 31, 26, 26, 26, 33, 2, 5, 5, 8, 29, 4, 94, 94, 3, 75, 1, NA, 131, 5, 11, 75, 12, 107, 74, 9, NA, NA, NA, NA, 22, 20, 1, 3, 2, 237, 237, 1, 1, 36, 36, 26, 45, 9, 12, 82, 72, 62, 198, 198, 1, 1, 8, 72, 72, 2, 2, 107, 3, 2, 2, 72, 104, 11, 197, 197, 142, 2, 198, 3, 20, 107, 107, 50, 72, 20, 72, NA, 82, 8, 118, 9, 3, 72, 24, 72, 50, NA, 13, 107, 16, 11, 4, 8, 49, 237, 21, 201, 201, 201, 201, 176, 176, 2), SOA = structure(as.integer(c(16, 9, 16, 16, 10, 14, 10, 10, 14, 13, 14, 16, 16, 18, 13, 18, 18, 18, 18, 18, 16, 5, 5, 1, 14, 2, 12, 18, 18, 18, 16, 16, 11, 16, 13, 16, 8, 8, 8, 16, 18, 5, 14, 14, 5, 5, 5, 16, 16, 12, 19, 16, 14, 13, 14, 19, 13, 12, 16, 14, 13, 18, 5, 18, 18, 5, 18, 18, 5, 18, 18, 5, 18, 18, 5, 5, 18, 18, 16, 14, 16, 16, 9, 2, 8, 14, 10, 14, 1, 16, 16, 18, 10, 5, 16, 5, NA, 5, 14, 13, 16, 13, 14, 14, 18, 18, 8, 6, 8, 18, 16, 5, 13, 8, 8, 16, 16, 13, 13, 5, 16, 16, 16, 13, 16, 10, 10, 10, 12, 10, 13, 18, 14, 16, 16, 14, 14, 16, 5, 14, 18, 7, 7, 7, 12, 9, 5, 16, 14, 14, 16, 14, 16, 14, 16, 10, 12, 12, 13, 9, 14, 14, 18, 13, 13, 16, 16, 16, 5, 16, 16, 5, 16, 16, 16, 16, 5, 5, 10, 14, 14, 18, 18, 9, 13, 14, 14, 14, 13, 14, 5, 5, 14, 14, 13, 18, 9, 16, 16, 16, 5, 16, 16, 16, 16, 16, 16, 16, 13, 13, 13, 13, 16, 11, 16, 16, NA, 5, 10, 13, 13, 16, 14, 16, 18, 18, 16, 9, 18, 5, 8, 14, 13, 18, 18, 18, 16, 16, 16, 16, 5, 16, 16, 18, 16, 16, 5, 18, 18, 16, 16, 16, 16, 16, 16, 13, 5, 5, 2, 5, 19, 5, 18, 16, 16, 11, 5, 5, 13, 13, 13, 16, 16, 16, 13, 16, NA, NA, 10, 16, 18, 16, 16, 13, 16, 5, 8, 3, 3, 16, 13, 16, 18, 16, 16, 13, 13, 8, 16, 13, 18, 16, 18, 18, 2, 5, 5, 5, 18, 16, 8, 10, 19, 9, 9, 9, 16, 19, 19, 18, 14, 16, 16, 16, 9, 19, 2, 2, 16, 14, 13, 14, NA, NA, 9, 14, 14, 9, 5, NA, NA, 9, 16, 12, 2, 2, 19, 14, 12, 16, 9, 12, 12, 16, 13, 16, 10, 9, 4, 16, 7, 13, 9, 16, 16, 16, 4, 18, 9, 8, 12, 10, 13, 18, 18, 9, 18, 17, NA, 14, 12, 16, 18, 18, 8, 13, 18, NA, NA, NA, NA, 16, 13, 18, 3, 19, 9, 9, 9, 18, 9, 9, 18, 18, 18, 16, 18, 13, 5, 5, 5, 8, 8, 16, 9, 9, 5, 5, 8, 18, 8, 8, 9, 5, 16, 15, 15, 16, 5, 5, 3, 13, 8, 8, 9, 13, 13, 9, NA, 18, 16, 5, 18, 3, 9, 16, 13, 9, NA, 18, 8, 14, 11, 9, 16, 10, 9, 9, 8, 8, 8, 8, 18, 18, 8)), .Label = c("ARON", "CRDA", "DCJH", "DJKT", "DEGF", "DOPC", "FACO", "FRNE", "HHW", "MEPR", "NGA", "OTHE", "OTRE", "JHG", "POH", "PKJI", "SPOC", "YTGB", "SUCH"), class = "factor"), about = structure(as.integer(c(3, 4, 1, 3, 1, 2, 3, 1, 2, 4, 3, 1, 1, 1, 4, 3, 1, 1, 3, 4, 3, 3, 4, 2, 1, 4, 1, 4, 4, 4, 4, 4, 3, 4, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3, 3, 1, 2, 1, 1, 3, 2, 4, 1, 4, 1, 3, 3, 3, 4, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 1, 1, 4, 1, 3, 1, 3, 3, 4, 1, 3, 3, 4, 2, 3, 3, NA, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 1, 1, 3, 2, 1, 1, 4, 2, 4, 2, 2, 2, 3, 4, 1, 2, 1, 1, 1, 1, 1, 2, 1, 3, 1, 2, 3, 3, 1, 4, 3, 3, 2, 3, 1, 1, 3, 3, 3, 2, 2, 2, 1, 3, 1, 3, 3, 3, 1, 1, 2, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 3, 2, 1, 1, 1, 3, 1, 1, 2, 3, 3, 1, 1, 1, 1, 1, 4, 1, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 3, 1, 4, 1, 1, 1, 1, 3, 1, 3, 4, NA, 1, 3, 2, 4, 4, 3, 2, 2, 1, 1, 1, 3, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 1, 3, 3, 1, 3, 4, 1, 4, 1, 4, 3, 3, 3, 3, 3, 4, 4, 4, 3, 2, 3, 3, 1, 3, 3, 1, 4, 1, 4, 4, 4, 3, 4, 1, 4, 4, NA, NA, 2, 1, 4, 4, 3, 1, 2, 4, 1, 3, 3, 3, 1, 3, 4, 3, 4, 3, 2, 1, 1, 1, 1, 3, 1, 1, 3, 3, 3, 3, 1, 4, 2, 2, 1, 1, 1, 3, 4, 2, 2, 2, 3, 2, 2, 2, 2, 4, 3, 3, 4, 1, 1, 1, NA, NA, 1, 2, 2, 4, 3, NA, NA, 1, 2, 1, 3, 3, 2, 2, 1, 2, 4, 1, 1, 4, 4, 4, 4, 4, 3, 3, 3, 2, 1, 3, 3, 3, 3, 3, 1, 1, 2, 3, 1, 1, 1, 1, 2, 1, NA, NA, 4, 3, 4, 3, NA, 2, 3, NA, NA, NA, NA, 2, 2, 4, 3, 4, NA, NA, 1, 1, 3, 3, 3, 4, 3, 3, 1, 2, 3, NA, NA, 1, 1, 2, 2, 2, 2, 2, NA, 1, 1, 1, 2, 1, 1, NA, NA, 2, 2, NA, 3, 2, NA, NA, 2, 2, 2, 2, NA, 1, 2, NA, 3, 3, 2, 2, 2, 2, NA, 1, NA, 4, 3, 2, 2, 4, NA, 2, NA, NA, NA, NA, 3, 3, 1)), .Label = c("non-I NO G", "I NO G", "non-I ERT", "I ERT" ), class = "factor")), .Names = c("IWD", "SOA", "about")) xtabs(IWD ~ about + SOA,data=test1) print(stripplot(IWD ~ about | SOA,data=test1, ylab="Days", sub="For days less than 365 days", between=list(x=0.3,y=0.3), jitter=T, main = paste("Covering District",j), scales = list( x = list(rot = 90)))) Ciao, Tom Tom Mulholland Tom Mulholland Associates Ph: 9371 1302 Mob: 0417 962139 ABN: 74 018 074 092 ---
Deepayan Sarkar
2004-Jun-09 23:04 UTC
[R] Help with a Lattice plot that fails with an empty unique combination
On Wednesday 09 June 2004 01:58, Tom Mulholland wrote:> While using Lattice I received the following error. > > Error in if (xx != 0) xx/10 else z/10 : argument is of length zero > In addition: Warning messages: > 1: is.na() applied to non-(list or vector) in: is.na(x) > 2: is.na() applied to non-(list or vector) in: is.na(x) > 3: no finite arguments to min; returning Inf > 4: no finite arguments to max; returning -Inf > 5: NaNs produced in: log(x, base) > Can anyone point me in the right direction.A traceback() shows that this is happening due to jitter() being called with a length-0 numeric. I have added a check in panel.stripplot. Until the next release, you can work around it by: assignInNamespace("panel.stripplot", function(x, y, jitter.data = FALSE, factor = 0.5, horizontal = TRUE, groups = NULL, ...) { if (length(x) < 1) return() x <- as.numeric(x) y <- as.numeric(y) y.jitter <- if (horizontal && jitter.data) jitter(y, factor = factor) else y x.jitter <- if (!horizontal && jitter.data) jitter(x, factor = factor) else x if (is.null(groups)) panel.xyplot(x = x.jitter, y = y.jitter, ...) else panel.superpose(x = x.jitter, y = y.jitter, groups = groups, ...) }, "lattice") Deepayan
Martin Maechler
2004-Jun-10 07:09 UTC
[R] Help with a Lattice plot that fails with an empty unique combination
>>>>> "Deepayan" == Deepayan Sarkar <deepayan at stat.wisc.edu> >>>>> on Wed, 9 Jun 2004 18:04:38 -0500 writes:Deepayan> On Wednesday 09 June 2004 01:58, Tom Mulholland wrote: >> While using Lattice I received the following error. >> >> Error in if (xx != 0) xx/10 else z/10 : argument is of length zero >> In addition: Warning messages: >> 1: is.na() applied to non-(list or vector) in: is.na(x) >> 2: is.na() applied to non-(list or vector) in: is.na(x) >> 3: no finite arguments to min; returning Inf >> 4: no finite arguments to max; returning -Inf >> 5: NaNs produced in: log(x, base) >> Can anyone point me in the right direction. Deepayan> A traceback() shows that this is happening due to Deepayan> jitter() being called with a length-0 numeric. clearly a bug in jitter() -- which has been fixed 2 minutes ago for R 1.9.1 alpha {and R-devel}: Now "jitter(x)" has "if(length(x) == 0) return(x)". Deepayan> I have added a check in panel.stripplot. Until the Deepayan> next release, you can work around it by: <................> Martin Maechler