2013-08-19 3 views
0

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

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

Пожалуйста, обратите внимание, что таблица подходит только на страницу, если он повернут в сторону.

Я хотел бы сейчас манипулировать записи, чтобы добавить (см here) команду 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'), но, конечно, она не будет повернута сбоку тогда.

Любые идеи?

ответ

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, так что будьте осторожны, чтобы специальные символы.

+0

спасибо, я попробую это в ближайшее время, 'sanitze.text.function', возможно, было тем, чего мне не хватало. –

+0

В настоящее время я на самом деле решил это, сделав это наоборот: я повернул всю страницу, использовал 'xtable', а затем повернул назад. –

+0

просто FYI, что 'function (x) x' является' identity' в 'base' – MichaelChirico