10

在我提出问题之前,让我创建一些数据。

 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)

结果1看起来像..

      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 包写一篇文章。当我的 *.rnw 文件被编译时,有没有办法将 result1 自动转换为乳胶表?

我尝试使用 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)
4

5 回答 5

7

作为替代方案,memisc 为 ftable 对象提供了 toLatex 方法。

library(memisc)
toLatex(result1)
于 2013-07-04T08:38:23.750 回答
5

方法一:

require(MIfuns)
require(Hmisc)
latex(ftable2data.frame(result1))
于 2012-03-11T21:40:45.540 回答
5

您可以使用该软件包xtable

library(xtable)
mytable=ftable(mydata)
print(
  xtable(format(mytable)),file="~/Desktop/mytable.tex"
)

我不知道它与给出的其他选项相比如何。

于 2014-04-30T11:23:27.487 回答
2

基于user2030503的回答,

# install.packages('simsalapar')
library(simsalapar)
utils::toLatex(result1)

函数 toLatex 是一个 S3 泛型,因此simsalapar:::toLatex.ftable()在给定一个 ftable 对象时传递给。或者你可以这样做simsalapar:::toLatex.ftable(result1)

完成后,我需要\usepackage{booktabs}在乳胶序言中包含toLatex.ftableuses \toprule。或者,您可以通过booktabs=FALSE.

它看起来也像toLatex.ftable修剪尾随零。为了解决这个问题,这就是我所做的(请参阅Formatting Decimal places in R for的答案format()):

result1[1:nrow(result1),1:ncol(result1)] %<>% as.numeric %>% format(nsmall=2,digits=3)

这会将 ftable 的矩阵转换为字符矩阵,但toLatex.ftable仍然有效。

我还发现用\usepackage{pdflscape}和 包裹我的桌子很有帮助\begin{landscape}\end{landscape}因为这些列联表可以很宽。

于 2016-11-14T01:04:22.483 回答
1

使用simsalapartoLatex()提供的功能。

library(simsalapar)
toLatex(result1)
于 2015-10-01T03:52:20.447 回答