所以我得到了一些像这样的参数估计
est<-matrix(1:10,nrow=2)
colnames(est)<-c("a","b","c","d","e")
我有一些像这样的标准错误
se<-matrix(seq(0.1,1,by=0.1),nrow=2)
colnames(se)<-c("a","b","c","d","e")
我想输出一个 Latex(或 HTML)表,其中每个参数估计值在其下方的括号中都有其标准误差。
桌子应该看起来像这样
a & b & c & d & e
1 & 3 & 5 & 7 & 9
(0.1) & (0.3) & (0.5) & (0.7) & (0.9)
2 & 4 & 6 & 8 & 10
(0.2) & (0.4) & (0.6) & (0.8) & (1.0)
除了,你知道,在适当的 Latex(或 HTML)中。我怎样才能从 R 中做到这一点?
如果您不介意有行标签,
texreg
包可以提供解决方案:
# your original code:
est <- matrix(1:10, nrow = 2)
colnames(est) <- c("a", "b", "c", "d", "e")
se <- matrix(seq(0.1, 1, by = 0.1), nrow = 2)
colnames(se) <- c("a", "b", "c", "d", "e")
# add row labels:
rownames(est) <- c("row 1", "row 2")
rownames(se) <- c("row 1", "row 2")
library("texreg")
# create a texreg object:
tr <- list()
for (j in 1:ncol(est)) {
tr[[j]] <- createTexreg(
coef.names = rownames(est),
coef = est[, j],
se = se[, j]
)
}
# for text output:
screenreg(tr, custom.model.names = colnames(est),
custom.note = "")
# for LaTeX output:
texreg(tr, custom.model.names = colnames(est),
custom.note = "")
# for HTML output:
htmlreg(tr, custom.model.names = colnames(est),
custom.note = "")
例如,文本输出将如下所示:
=============================================
a b c d e
---------------------------------------------
row 1 1.00 3.00 5.00 7.00 9.00
(0.10) (0.30) (0.50) (0.70) (0.90)
row 2 2.00 4.00 6.00 8.00 10.00
(0.20) (0.40) (0.60) (0.80) (1.00)
=============================================
您也可以通过为 screenreg 函数指定其他参数来省略顶部、底部和中间规则(
inner.rule = ""
和 outer.rule = ""
)。
请注意,您应该安装
texreg
(>= 1.29.7)。
两步:
使用表中的数据创建矩阵
M <- matrix(as.vector(rbind(as.character(est),
paste("(",as.vector(se),")", sep="")
)
), nrow=4)
colnames(M) <- colnames(est)
将矩阵写入乳胶或 html 表格:
library(xtable)
print(xtable(M),type="latex") # or type="html"
查看 apsrtable 软件包是否适合您。根据您拥有的模型对象的类型,这可能是解决方案。该软件包也很容易扩展到其他型号。
----------------- 更新
为什么不使用简单的 for 循环和一些粘贴命令呢?做一些像这样有点黑客风格的事情可能比找到通用的解决方案更容易。
est<-matrix(1:10,nrow=2)
colnames(est)<-c("a","b","c","d","e")
se<-matrix(seq(0.1,1,by=0.1),nrow=2)
colnames(se)<-c("a","b","c","d","e")
se <- apply(se, 2, function(i) paste('(', i, ')', sep=''))
output <- NULL
for (i in 1:nrow(est)){
output <- rbind(output, est[i,])
output <- rbind(output, se[i,])
}
output <- apply(output, 1, paste, collapse=' & ')
output <- paste(output, '\\\\')
cat(output, sep='\n')
在 R markdown 中,您可以使用语法 $$\hat{y}=\underset{(se)}{ eta1}$$。希望有帮助