Создание таблицы latex из объекта ftable в R
позвольте мне создать некоторые данные, прежде чем я задам свой вопрос.
my.data <- data.frame(A = sample(seq(1,100,by=5),10,replace=TRUE),W = rnorm(10),X =sample(1:10),Y = sample(c("yes", "no"), 10, replace = TRUE),Z=sample(c('a','b','c','d'),10,replace=TRUE))
attach(my.data)
my.d <- xtabs(W~Z+Y+A);my.d
table.data <- ftable(my.d)
result1 <- round(table.data,2)
result1 выглядит так ..
A 6 11 16 26 71 76 86 91
Z Y
a no 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
yes 0.00 0.56 0.00 0.00 0.00 0.79 0.00 0.01
b no 0.61 0.00 -0.22 0.14 0.00 0.00 -0.08 1.71
yes 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
c no 0.00 0.00 0.00 0.00 -0.08 0.00 0.00 0.00
yes 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
d no 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00
yes 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Я на самом деле пишу статью, используя пакет knitr. Есть ли способ преобразовать result1 в таблицу latex автоматически, когда мой *.rnw файл соблюдается ?
Я попытался с xtable, но получил следующую ошибку...
Error in UseMethod("xtable") : no applicable method for 'xtable' applied to an object of class "ftable"
спасибо @DWin и @Yihui. Помимо latex (), я также использовал xtable как указано под
print(xtable(ftable2data.frame(result1)))
удалить ненужные имена строк я сделал следующее
print(xtable(ftable2data.frame(result1)),include.rownames=FALSE)
5 ответов
в качестве альтернативы memisc предоставляет методы toLatex для объектов ftable.
library(memisc)
toLatex(result1)
Вы можете использовать пакет xtable
:
library(xtable)
mytable=ftable(mydata)
print(
xtable(format(mytable)),file="~/Desktop/mytable.tex"
)
Я не знаю, как он сравнивается с другими вариантами.
построение ответа user2030503,
# install.packages('simsalapar')
library(simsalapar)
utils::toLatex(result1)
функция toLatex является S3 generic, поэтому переходит в simsalapar:::toLatex.ftable()
при задании объекта ftable. В качестве альтернативы вы можете просто сделать simsalapar:::toLatex.ftable(result1)
.
как только это было сделано, мне нужно, чтобы включить \usepackage{booktabs}
в преамбуле latex как toLatex.ftable
использует \toprule
. В качестве альтернативы вы можете пройти booktabs=FALSE
.
он также выглядит как toLatex.ftable
обрезает нули. Исправить, что это то, что я сделал (см. ответ на форматирование десятичных знаков в R на format()
):
result1[1:nrow(result1),1:ncol(result1)] %<>% as.numeric %>% format(nsmall=2,digits=3)
это преобразует матрицу ftable в матрицу символов, но toLatex.ftable
до сих пор работает.
я также нашел полезным \usepackage{pdflscape}
и оберните мой стол \begin{landscape}
и \end{landscape}
потому что эти таблицы непредвиденных обстоятельств могут быть довольно широкими.