2

所以我有一些像这样的参数估计

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)

除了,你知道,在适当的乳胶(或 HTML)。我怎样才能从 R 中做到这一点?

4

3 回答 3

3

如果您不介意使用行标签,该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)。

于 2013-10-17T10:01:06.983 回答
2

两步:

用表中的数据创建矩阵

M <- matrix(as.vector(rbind(as.character(est),
                            paste("(",as.vector(se),")", sep="")
                            )
             ), nrow=4)
colnames(M) <- colnames(est)

将矩阵写为 Latex 或 html 表:

library(xtable)
print(xtable(M),type="latex") # or type="html" 
于 2011-03-19T18:30:13.060 回答
1

See if the apsrtable package works for you. Depending on the kind of model object you have, this may be the solution. The package is quite easily extendable to other models too.

----------------- UPDATE

Why don't you just use a simple for loop and some paste commands? Probably easier to do something slightly hack-ish like this than to find a general solution.

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')
于 2011-03-19T02:14:42.030 回答