使用R的xtable rownames

时间:2013-02-20 19:09:05

标签: r latex sweave xtable

我正在使用R和LaTeX以及表格的xtable包。我有点疑惑为什么我指定的rownames没有显示在我的表中。这是一个例子:

\documentclass[a4paper, 11pt]{article}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\begin{document}
\SweaveOpts{concordance=TRUE}
<<results=tex, fig=FALSE, echo=FALSE>>=
library(xtable)
table.matrix <- matrix(numeric(0), ncol = 5, nrow = 12)
colnames(table.matrix) <- c("$m_t$", "$p_t$", "$R^b_t$", "$R^m_t$", "$y^r_t$")
rownames(table.matrix) <- c("$m_{t-1}$", " ", "$p_{t-1}$", " ", "$R^b_{t-1}$", " ", "$R^m_{t-1}$", " ", "$y^r_t$", " ", "$c$", " ")

tex.table <- xtable(table.matrix)
align(tex.table) <- "c||ccccc"
print(tex.table, include.rownames = TRUE, hline.after = c(-1, 0, seq(0, nrow(table.matrix), by = 2)), sanitize.text.function = function(x){x})
@
\end{document}

对我来说这似乎很简单。基本上我所拥有的是对简单VAR模型的估计,在行中我希望变量带有(t-1)下标,每隔一行应该有p值(它们现在在名称向量中是空的)。有什么想法吗?

编辑:正如nograpes所指出的,一些rownames是重复的问题。有谁知道如何绕过这个(不使用第一列作为名称列)?我只想要均匀编号的行为空,或者某种指示它们是p值。

1 个答案:

答案 0 :(得分:6)

尝试只运行R代码,然后您会收到警告,告诉您行名称未显示的原因:

library(xtable)
table.matrix <- matrix(numeric(0), ncol = 5, nrow = 12)
colnames(table.matrix) <- c("$m_t$", "$p_t$", "$R^b_t$", "$R^m_t$", "$y^r_t$")
rownames(table.matrix) <- c("$m_{t-1}$", " ", "$p_{t-1}$", " ", "$R^b_{t-1}$", " ", "$R^m_{t-1}$", " ", "$y^r_t$", " ", "$c$", " ")

xtable(table.matrix)
# Warning message:
# In data.row.names(row.names, rowsi, i) :
#  some row.names duplicated: 4,6,8,10,12 --> row.names NOT used

因此,您不能在R中重复rownames。您可以通过将名称设为“列”而不是使用rownames来解决此问题。