[R] Hmisc labels and captions in latex.list()

J Michael Dean mdean77 at comcast.net
Wed Dec 31 02:16:21 CET 2008


Thanks, Frank.  I am an old newbie, so your advice was not  
straightforward to me, but it nudged me to look at the structure of  
the contents object. I did solve the problem by passing the contents  
data frame in the contents object.  Using the example dfr from Dieter,

 > g <- contents(dfr)
 > g

Data frame:dfr	20 observations and 2 variables    Maximum # NAs:0

   Levels Storage
x         double
y      2 integer

+--------+-----------+
|Variable|Levels     |
+--------+-----------+
|    y   |female,male|
+--------+-----------+

 > str(g)
List of 6
  $ contents  :'data.frame':	2 obs. of  2 variables:
   ..$ Levels : int [1:2] 0 2
   ..$ Storage: Factor w/ 2 levels "double","integer": 1 2
  $ dim       : int [1:2] 20 2
  $ maxnas    : int 0
  $ dfname    : chr "dfr"
  $ Levels    :List of 1
   ..$ y: chr [1:2] "female" "male"
  $ longLabels: NULL
  - attr(*, "class")= chr "contents.data.frame"

 > g$contents
   Levels Storage
x      0  double
y      2 integer

latex(g$contents, caption='hello', label='mylabel',file='')

This may be useful to others.  But sounds like this has not been a  
high traffic issue!

- Mike

On Dec 30, 2008, at 8:35 AM, Frank E Harrell Jr wrote:

> J Michael Dean wrote:
>> Thanks, Dieter, for your response shown below.
>> library(Hmisc)
>> dfr <- data.frame(x=rnorm(20),y=sample(c('male','female'),20,TRUE))
>> cnt <- contents(dfr)
>> latex(cnt,label="tab:mytab",caption="This is a caption")
>> The problem is that I only want to display cnt[1] - I am simply  
>> making a table that shows the structure of a dataframe, and I do  
>> not want the variable levels from contents.
>> > class(cnt)
>> [1] "contents.data.frame"
>> > class(cnt[1])
>> [1] "list"
>> When I execute your example, it does work, but if I change it to  
>> latex(cnt[1]...) then the caption and label do not work because  
>> latex.list() is executed.
>> - Mike
>
> What we really need is a latex method for contents.  As I usually  
> include latex(describe(mydata), file='') in an Sweave report I  
> haven't needed this.  If any others need it I'll probably write  
> latex.contents.data.frame.  In the meantime you can take the object  
> produced by contents( ) and remove the value levels components, then  
> pass the smaller object to latex().
>
> Frank
> -- 
> Frank E Harrell Jr   Professor and Chair           School of Medicine
>                     Department of Biostatistics   Vanderbilt  
> University



More information about the R-help mailing list