2014-03-14 37 views
2

我有一些代码用于在Knitr中创建表。我手动键入了一些数字以使代码可重现。由Latex()从Hmisc包和Knitr生成的乳胶表的奇怪行为

Expenditure <- as.matrix(data.frame(c("41","55","71","84"),c("41","55","71","84"),c("41","55","71","84"),c("41","55","71","84"),c("41","55","71","84"),c("41","55","71","84"),c("41","55","71","84"),c("41","55","71","84"))) 
rownames(Expenditure) <- c("30000","40000","50000","60000") 
colnames(Expenditure) <- as.character(seq(0,0.35,0.05)*100) 
latex(Expenditure, 
     n.cgroup=c(8), cgroup=c("Largest Historical Drawdown"), 
     file="", 
     ctable=TRUE, caption="Shortfall Risk Table", caption.loc=c('top'), label="tab:SfRisk") 

这给出了以下乳胶代码:

%latex.default(Expenditure, n.cgroup = c(8), cgroup = c("Largest Historical Drawdown"),  file = "", ctable = TRUE, caption = "Shortfall Risk Table",  caption.loc = c("top"), label = "tab:SfRisk")% 
\ctable[caption={Shortfall Risk Table}label=tab:SfRisk,pos=!tbp,]{lllllllll}{}{\FL 
\multicolumn{1}{l}{\bfseries Expenditure}&\multicolumn{8}{c}{\bfseries Largest Historical Drawdown}\NN 
\cline{2-9} 
\multicolumn{1}{l}{}&\multicolumn{1}{c}{0}&\multicolumn{1}{c}{5}&\multicolumn{1}{c}{10}&\multicolumn{1}{c}{15}&\multicolumn{1}{c}{20}&\multicolumn{1}{c}{25}&\multicolumn{1}{c}{30}&\multicolumn{1}{c}{35}\ML 
30000&41&41&41&41&41&41&41&41\NN 
40000&55&55&55&55&55&55&55&55\NN 
50000&71&71&71&71&71&71&71&71\NN 
60000&84&84&84&84&84&84&84&84\LL 
} 

这将产生一个乳胶表,但标题已经有“标签”添加到末尾的话,那么它说:“亏损风险Tablelabel” 。 “Tablelabel”这个词不会出现在.tex文件的任何地方。我已经寻找了解决方案,但我找不到任何东西。任何帮助非常感谢!

我无法发布图片,因为我没有足够高的“声誉”,显然。所以我已经把一个放在johnbutters.org/examples

+2

逗号是否错误:在

+0

就是这样!谢谢。看起来像Hmisc中的latex()函数中的错误...? – user33102

回答

2

根据cbeleites的评论,这是一个来自latex()函数的ctable代码的问题。解决方案是“ctable = FALSE”。这仍然给出稍微奇怪的输出行:“\ caption {Shortfall Risk Table \ label {tab:SfRisk}}”但最终输出看起来不错。