Erik Iverson
2010-Mar-08 22:10 UTC
[R] page boundaries for latex printing of summary.formula objects in Hmisc
Hello, Warning, I'm guessing only those who have used the Hmisc package's summary.formula function with LaTeX will be able to offer much help here. I am using the Hmisc package's summary.formula function to produce tables for a LaTeX report. The "latex" function in the same package supports longtables in LaTeX. Ideally, I would like for page breaks in the LaTeX output to only occur at variable boundaries. ## Sample R code ## load the Hmisc package library(Hmisc) ## create an example data.frame test.df <- data.frame(sex = gl(2, 110, labels = c("Male", "Female")), fac1 = sample(gl(11, 100, labels = paste("V1 Level", 1:11))), fac2 = sample(gl(11, 100, labels = paste("V2 Level", 1:11))), fac3 = sample(gl(11, 100, labels = paste("V3 Level", 1:11))), fac4 = sample(gl(11, 100, labels = paste("V4 Level", 1:11))), fac5 = sample(gl(11, 100, labels = paste("V5 Level", 1:11))), fac6 = sample(gl(11, 100, labels = paste("V6 Level", 1:11)))) ## create the summary.formula object sf <- summary.formula(sex ~ fac1 + fac2 + fac3 + fac4 + fac5 + fac6, data = test.df, method = "reverse") ## print out the LaTeX code to the screen, not a file latex(sf, file = "", longtable = TRUE) Notice how the LaTeX output puts the newline in the middle of factor 4, instead of before or after. <excerpt of LaTeX ouput follows> fac4~:~V4~Level~1&11\%~{\scriptsize~(59)}&~7\%~{\scriptsize~(41)}\tabularnewline ~~~~V4~Level~2&10\%~{\scriptsize~(56)}&~8\%~{\scriptsize~(44)}\tabularnewline ~~~~V4~Level~3&~9\%~{\scriptsize~(47)}&10\%~{\scriptsize~(53)}\tabularnewline ~~~~V4~Level~4&~9\%~{\scriptsize~(49)}&~9\%~{\scriptsize~(51)}\tabularnewline ~~~~V4~Level~5&~9\%~{\scriptsize~(51)}&~9\%~{\scriptsize~(49)}\tabularnewline ~~~~V4~Level~6&~9\%~{\scriptsize~(50)}&~9\%~{\scriptsize~(50)}\tabularnewline ~~~~V4~Level~7&~7\%~{\scriptsize~(39)}&11\%~{\scriptsize~(61)}\tabularnewline \newpage ~~~~V4~Level~8&~9\%~{\scriptsize~(51)}&~9\%~{\scriptsize~(49)}\tabularnewline ~~~~V4~Level~9&~9\%~{\scriptsize~(51)}&~9\%~{\scriptsize~(49)}\tabularnewline ~~~~V4~Level~10&~9\%~{\scriptsize~(47)}&10\%~{\scriptsize~(53)}\tabularnewline ~~~~V4~Level~11&~9\%~{\scriptsize~(50)}&~9\%~{\scriptsize~(50)}\tabularnewline I expect this given the documentation in ?latex of lines.page, which is set to 40 by default. lines.page: Applies if ?longtable=TRUE?. No more than ?lines.page? lines in the body of a table will be placed on a single page. Page breaks will only occur at ?rgroup? boundaries. The problem is that variable boundaries don't in general correspond to constants, like 40 lines. So, rgroup sounds promising. I want the lines per variable to correspond to be the n.rgroup values, but since my tables are dynamic, in that the variables and number of levels in them change over time, I can't think of a way to define n.rgroup without specifying it per variable. My first thought was to compute it from the number of levels per variable in the formula. In fact, I did try this but immediately ran into some misconceptions I had about how continuous variables are represented internally within the latex function. Is there any easier way to accomplish this breaking of pages on variable boundaries using this set of functions? I suspect not, but thought I'd ask. I think I can figure out the approach I suggested in the preceding 2 paragraphs, but just want to make sure I'm not missing something ... Thanks a lot! Erik Iverson
Possibly Parallel Threads
- bootstrapped cox regression in rms package (non html!)
- bootstrapped cox regression (rms package)
- surpressing tickmarks / labels x-as for two sets of boxplot (plotted as stacked boxplots)
- (kein Betreff)
- Latex problem in Hmisc (3.8-1) and Mac Os X with R 2.11.1