2011-08-23 14 views
7

Tengo un código de generación de la tabla de látex muestra como estaAdición de una línea horizontal entre las filas de una tabla de látex usando R xtable

df<-data.frame(name=rep(letters[1:7],each=24),salary=runif(24*7,100,200)) 
lst<-tapply(df$salary,df$name,matrix,nrow=4,byrow=T) 
xlst<-lapply(lst,xtable) 

Ahora quiero introducir \ hdashline automáticamente después de cada fila de cada mesa y también un \ vspace {2 em} en medio de las tablas de código R Wat he tratado es esta

for(i in seq_along(lst)){ 
    addtorow[i] <- list(pos = list(seq_len(nrow(lst[[i]])-1)), 
         command = "\\hdashline \n") 
} 

cambios wat Qué necesito hacer para loop..It en obras cuando solicito una sola tabla pero no trabajando en una para el bucle ... Cualquier ayuda es muy apreciada ...

+0

+1 para publicar datos de muestra y el código. Bienvenido a SO. – Andrie

Respuesta

9

En lugar de utilizar un bucle, considere utilizar la funcionalidad existente print.xtable combinada con pegar.

  1. hdashlines: Considere el uso de los parámetros print.xtable. Por ejemplo, hay un parámetro hline.after que controla las líneas horizontales entre las líneas de la tabla.

  2. vspace: Esto es posiblemente más simple usando paste.

Por ejemplo:

library(xtable) 
df <- data.frame(name=rep(letters[1:3],each=24),salary=runif(24*3,100,200)) 
lst <- tapply(df$salary,df$name,matrix,nrow=4,byrow=T) 
xlst <- lapply(lst,function(x)print(xtable(x), hline.after=1:nrow(x))) 
xlst <- lapply(xlst, paste, "\\vspace{2em}") 
xlst 

[1] "tabla% látex generada en R 2.13.1 por XTABLE 1,5-6 paquete \ n% Tue Aug 23 13:36:41 2011 \ n \ begin {table} [ht] \ n \ begin {center} \ n \ begin {tabular} {rrrrrrr} \ n 6 \\ \ n 1 & 158.66 & 115,81 & 106,70 & 128,78 & 157,43 & 191,01 \\ \ n \ hline \ n2 & 159,09 & 172,31 & 153,93 & 127,91 & 106,93 & 147,95 \\ \ n \ hline \ n3 & 135,65 & 139,45 & 192,90 & 108,78 & 186.52 & 164.10 \\ \ n \ hline \ n4 & 190.10 & 154.39 & 124.91 & 199,24 & 161,99 & 167,61 \\ \ n
\ hline \ n \ end {tabular} \ n \ end {center} \ n \ end {table} \ n \ vspace {2 em}"


Ver ?print.xtable para más detalles. Si hline.after no es lo suficientemente flexible para sus propósitos, eche un vistazo a add.to.row donde puede especificar tanto la posición como el tipo de elemento exacto para agregar.

Cuestiones relacionadas