Управление записью xtable и печать сбоку

Я успешно создал таблицу, которую я могу запустить следующим образом:

library(xtable)
print(x, floating.environment='sidewaystable', inlude.rownames=F)

Обратите внимание, что таблица помещается на страницу только в том случае, если она повернута вбок.

Теперь я хотел бы манипулировать записями, чтобы добавить databar (см. здесь) команда для процентов в таблице

Например:

x <- print(xtable(x, caption="My table"), include.rownames=F
x <- gsub("(\\d{1,3}\\.\\d{2})","\\\\databar{\\1}",x)

Проблема в том, что x теперь является вектором символов, и я больше не могу использовать print(x, floating.environment='sidewaystable', inlude.rownames=F).

Я могу построить таблицу, используя cat(x, '\n'), но, конечно, тогда она не будет повернута вбок.

Любые идеи?


person Joanne Demmler    schedule 19.08.2013    source источник


Ответы (1)


решение может заключаться в том, чтобы поставить databar перед использованием функции xtable, например:

d1 <- data.frame(x1 = c("A", "B", "C", "D", "E", "F"), x2 = runif(6)*100)

d1
#   x1         x2
# 1  A  0.2890781
# 2  B 99.9268717
# 3  C 70.0964751
# 4  D 90.7419767
# 5  E 58.6721176
# 6  F 38.5582817

d1$x3 <- paste0("\\databar{", round(d1$x2, 2), "}")
d1
#   x1         x2               x3
# 1  A  0.2890781  \\databar{0.29}
# 2  B 99.9268717 \\databar{99.93}
# 3  C 70.0964751  \\databar{70.1}
# 4  D 90.7419767 \\databar{90.74}
# 5  E 58.6721176 \\databar{58.67}
# 6  F 38.5582817 \\databar{38.56}

library(xtable)
print(xtable(d1), sanitize.text.function=function(x) x)
# \begin{table}[ht]
# \centering
# \begin{tabular}{rlrl}
# \hline
#  & x1 & x2 & x3 \\ 
# \hline
# 1 & A & 0.29 & \databar{0.29} \\ 
# 2 & B & 99.93 & \databar{99.93} \\ 
# 3 & C & 70.10 & \databar{70.1} \\ 
# 4 & D & 90.74 & \databar{90.74} \\ 
# 5 & E & 58.67 & \databar{58.67} \\ 
# 6 & F & 38.56 & \databar{38.56} \\ 
# \hline
# \end{tabular}
# \end{table}

Обратите внимание, что вам нужно переопределить параметр sanitize.text.function, поэтому будьте осторожны со специальными символами.

person Victorp    schedule 23.08.2013
comment
спасибо, я скоро попробую это, возможно, sanitze.text.function было тем, чего мне не хватало. - person Joanne Demmler; 23.08.2013
comment
На данный момент я фактически решил это, сделав это наоборот: я повернул всю страницу, использовал xtable, а затем повернул обратно. - person Joanne Demmler; 23.08.2013
comment
просто к вашему сведению, что function(x) x это identity в base - person MichaelChirico; 10.08.2016