Hi All:-- I've started using the the Hmisc reporting facilities recently, mostly successfully. I'm having some trouble with mChoice() multiple-choice objects, though. Here's some example code and output from R-help a couple of years ago:
library(Hmisc) Symptom1 <- c("Headache", "Headache", NA) Symptom2 <- c(NA, "Anxiety", NA) Symptoms <- mChoice(Symptom1, Symptom2) summary(~ Symptoms, method="reverse") [Output:] Descriptive Statistics (N=3) +-------------------+-------+ | | | +-------------------+-------+ |Symptom1 : Headache|67% (2)| +-------------------+-------+ | NA |67% (2)| +-------------------+-------+ | Anxiety |33% (1)| +-------------------+-------+ However, if I try this same example using R 2.10.1 and the latest version of Hmisc, I get the following output table: +-------------------+--------+ | | | +-------------------+--------+ |Symptom1 : Headache|100% (3)| +-------------------+--------+ | NA |100% (3)| +-------------------+--------+ | Anxiety |100% (3)| +-------------------+--------+ Further, as.double(Symptoms) incorrectly returns Headache <NA> Anxiety [1,] 1 1 1 [2,] 1 1 1 [3,] 1 1 1 instead of Headache <NA> Anxiety [1,] 1 1 0 [2,] 1 0 1 [3,] 0 1 0 N.B.: > levels(Symptoms) [1] "Headache" NA "Anxiety" The problems with as.double.mChoice() appear related to inmChoice(), which calls match.mChoice(). The Hmisc docs say, "inmChoice() creates a logical vector the same length as x whose elements are TRUE when the observation in x contains at least one of the codes or value labels in the second argument," but inmChoice() doesn't seem to be returning a vector the same length as x; it incorrectly returns, e.g., > inmChoice(Symptoms, 1) # "Headache" [1] TRUE instead of [1] TRUE TRUE FALSE I tried rewriting inmChoice() to avoid the call to match.mChoice(), which fixed as.double.mChoice(), but that didn't change the output from summary.formula(). The R function match.mChoice() '.Call's the C function do_mchoice_match(SEXP x, SEXP table, SEXP nomatch), which may contain the source of these problems, but I haven't had the time to try and debug it yet. Until then, I thought I'd post the problem here in hope of getting the attention of someone who might recognize the problem I'm having. I get the same results on various Windows systems -- XP (x86), Vista (x64), Windows 7 (x86). Thanks to anyone who can help. I really like Hmisc reporting, so if I'm able to make the changes myself I'll update this thread. -- Jim Java > R.Version() $platform [1] "i386-pc-mingw32" $arch [1] "i386" $os [1] "mingw32" $system [1] "i386, mingw32" $status [1] "" $major [1] "2" $minor [1] "10.1" $year [1] "2009" $month [1] "12" $day [1] "14" $`svn rev` [1] "50720" $language [1] "R" $version.string [1] "R version 2.10.1 (2009-12-14)" ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.