使用R语言的xtable行名称

3

我正在使用R和LaTeX以及xtable包来制作表格。我有点困惑为什么我的指定行名称没有显示在表格中。以下是一个例子:

\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指出的那样,问题是一些行名称重复了。有没有人知道如何规避这个问题(不使用第一列作为名称列)?我只想让偶数行为空,或者以某种方式表明它们是p值。

1个回答

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来解决这个问题。

很好发现。我尝试使用rownames(table.matrix) <- c("$m_{t-1}$", "test", "$p_{t-1}$", "test2", "$R^b_{t-1}$", "test3", "$R^m_{t-1}$", "test4", "$y^r_t$", "test5", "$c$", "test6"),它起作用了。所以似乎没有重复的行名。我能否以某种方式强制它忽略这一点? - hejseb
不,我怀疑这个。行名称必须是唯一的,因为它们可以用于索引数据框(或矩阵)。 - nograpes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接