2013-08-17 18 views
0

我想使用表格命令在R/Sweave中创建一个表。我希望行标签成为我的数据框consca的标题。 (每列是一个问题,每行是一个学生的每一个问题的回答。)我使用的命令是这样的:data.frame列作为R中的表格行标签

latex(tabular(Heading('Questions')*(paste(labels(consca)[[2]],collapse='+')) ~ (n=1) + (mn + 
      sdev),data=consca)) 

会抛出这个错误:

Error in term2table(rows[[i]], cols[[j]], data, n) : 
Argument paste(labels(consca)[[2]], collapse = "+") is not length 298 

粘贴参数作品...

paste(labels(consca)[[2]],collapse='+') 
    [1] "Q02+Q03+Q06+Q17+Q19+Q25+Q31+Q33+Q36+Q39+Q45+Q50" 

,并产生输出我的愿望:

latex(tabular(Heading('Questions')*(Q02+Q03+Q06+Q17+Q19+Q25+Q31+Q33+Q36+Q39+Q45+Q50) ~ (n=1) + 
       (mn + sdev),data=consca)) 

但是,我想用多种比例(即我想将consca更改为其他对象,并且我想消除复制/粘贴步骤。)

我已经拨弄evalas.symbol,但无济于事。也许我没有以正确的方式使用它们。

OK,而对于那些你们谁希望最小的可重复的例子,这里有云:

require(tables) 
a <- rnorm(10) 
b <- rnorm(10,2) 
c <- rnorm(10,100) 
x <- data.frame(a,b,c) 
# This works: 
tabular(a+b+c ~ (mean + sd), x) 
# This fails: 
tabular(paste(labels(x)[[2]],collapse='+') ~ (mean+sd),x) 
# Even though: 
paste(labels(x)[[2]],collapse='+') 
[1] "a+b+c" 
+0

您应该提及您使用的软件包...我假设** Hmisc **? – Thomas

+0

这将是[表格包](http://cran.r-project.org/web/packages/tables/vignettes/tables.pdf)。这种不正当行为都在表格功能中。我编辑了我的例子。 – wolfste4

回答

0

我发现使用describe功能在psych包一个解决方法。 (最终,我想要的不仅仅是mean和sd,而且describe函数会自动计算它们。)这会创建一个data.frame,这很容易变成一个\ LaTeX表。