манипулирование заголовком xtable

Я использую xtable в R, чтобы получить код LaTeX для таблиц. Я хочу изменить первый элемент «заголовка» (первая строка в таблице LaTeX), но я видел только возможность добавить текст в конец строки (используя add.to.row в xtable).

Следующий пример должен пояснить, чего я хочу.

Бег

xtable(matrix(c(1,0.25,3,0.75),nrow=2,dimnames=list(c('absolute','relative'),c('GNU','Leo'))))

дает результат

% latex table generated in R 2.13.0 by xtable 1.5-6 package
% Tue Jun 19 22:39:49 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
  \hline
 & GNU & Leo \\ 
  \hline
absolute & 1.00 & 3.00 \\ 
  relative & 0.25 & 0.75 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

Я хотел бы получить линию

  frequency & GNU & Leo \\ 

вместо линии

  & GNU & Leo \\

но я не смог сделать это с помощью xtable. Дайте мне знать, если у вас есть идея, как это сделать. Кроме того, я заранее извиняюсь, если это не то место, где я спрашиваю, или если я пропустил ответ или очевидное решение.


person binkyhorse    schedule 19.06.2012    source источник


Ответы (2)


Другой вариант — использовать функцию latex из Hmisc:

library(Hmisc)
m <- matrix(c(1,0.25,3,0.75),nrow=2,dimnames=list(c('absolute','relative'),c('GNU','Leo')))
latex(m,file = "",rowlabel = "frequency")
person joran    schedule 19.06.2012

Одна возможность:

dat1 <- data.frame(matrix(c(1,0.25,3,0.75),nrow=2,dimnames=list(c('absolute','relative'),c('GNU','Leo'))))
dat <- data.frame(Freq = rownames(dat1), dat1)

print(
  xtable(
           x = dat
         , caption = "Your Caption"
         , label = "tab:dat"
         , align = paste(paste("l|", paste(rep("r", ncol(dat)-1), collapse=''), sep = ""), "|r", sep = "")
         , digits = c(0, rep(3, ncol(dat)))
         )
  , table.placement = "H"
  , caption.placement = "top"
  , include.rownames = FALSE
  , include.colnames = TRUE
  , size = "normalsize"
  , hline.after = c(-1, 0, nrow(dat))
  )
person MYaseen208    schedule 19.06.2012
comment
Спасибо! Это хороший хак. - person binkyhorse; 20.06.2012