Добавление горизонтальной линии между строками в латексной таблице с использованием R xtable - PullRequest
7 голосов
/ 23 августа 2011

У меня есть пример кода генерации латексной таблицы, подобный этому

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)

Теперь я хочу автоматически вводить \ hdashline после каждой строки в каждой таблице и также \ vspace {2em} между таблицами из кода R Ват, я пытался это

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

Ват изменения, которые мне нужно сделать для цикла ... Это работает, когда я подаю заявку на одну таблицу, но не работает в цикле ... Любая помощь очень ценится ...

Ответы [ 2 ]

10 голосов
/ 23 августа 2011

Вместо того, чтобы использовать цикл, рассмотрите возможность использования существующей функциональности print.xtable в сочетании с вставкой.

  1. hdashlines: Рассмотрите возможность использования параметров print.xtable. Например, есть параметр hline.after, который управляет горизонтальными линиями между строками таблицы.

  2. vspace: Возможно, проще использовать paste.

Например:

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] "% латексная таблица, сгенерированная в R 2.13.1 пакетом xtable 1.5-6 \ n% Вт 23 августа 13:36:41 2011 \ п \ BEGIN {таблица} [ХТ] \ п \ {начать центр} \ п \ {начать табличной} {RRRRRRR} \ п & 1 & 2 & 3 & 4 & 5 & 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 {2em} "


См. ?print.xtable для более подробной информации. Если hline.after недостаточно гибок для ваших целей, взгляните на add.to.row, где вы можете указать и позицию, и тип добавляемого элемента.

0 голосов
/ 04 февраля 2019

Если вы используете print.xtable, попробуйте следующее внутри print.xtable:

hline.after = rep(c(1:nrow(df)),2)# repeating horizontal lines in xtable

...