所以我有一些像这样的参数估计
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)表,其中每个参数估计值都在其下方的parens中有标准误。
表格看起来应该是这样的
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?
这样做答案 0 :(得分:2)
两个步骤:
使用表格中的数据创建矩阵
M <- matrix(as.vector(rbind(as.character(est),
paste("(",as.vector(se),")", sep="")
)
), nrow=4)
colnames(M) <- colnames(est)
将矩阵写为latex或html table:
library(xtable)
print(xtable(M),type="latex") # or type="html"
答案 1 :(得分:2)
如果您不介意拥有行标签,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 = ""
)来省略top,bottom和mid规则。
请注意,您应安装texreg
(&gt; = 1.29.7)。
答案 2 :(得分:0)
查看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')