2017-08-29 86 views
2

使用pander打印表格时,我得到一个我无法理解的错误消息Error in pandoc.table.return(...) : Wrong number of parameters (76 instead of *4*) passed: justifyR:使用pander打印表格

a <- table(mtcars$mpg, mtcars$cyl) 
pander(a) 

回溯:

6. stop(sprintf("Wrong number of parameters (%s instead of *%s*) passed: justify", length(justify), length(t.width))) 
5. pandoc.table.return(...) 
4. cat(pandoc.table.return(...)) 
3. pandoc.table(x, caption = caption, ...) 
2. pander.table(a) 
1. pander(a) 

我在做什么错误?我的目标是以表格格式(变量1的值作为行名称,变量2的值作为列名称)打印表格,而不是如果将表格转换为数据框(第1列中的变量1的值) ,列2中的变量2的值,列3中的频率)。我知道它可以与print一起工作,但我想拥有pander布局,因为我所有其他表格(来自数据帧格式)都用pander打印。

+1

尝试先将'a'转换为data.frame。 –

+0

已经尝试过,但它没有我想要的布局打印它。我的意思是它打印两列的值和第三个频率,当我想var1的值为rownames,var2的值作为col名称和频率在表中的两个交点。 – GaryDe

+0

这看起来像是来自旧版本pander的一个bug。如果问题仍然存在,您能否请更新至最新版本并在GH上打开一张票? – daroczig

回答

1

我意识到我已经忘记了,但我不得不在某个地方:

panderOptions('table.alignment.default', 
    function(df) ifelse(sapply(df, is.numeric), 'right', 'left')) 

与替换它:

panderOptions('table.alignment.default', 
    function(df) ifelse(sapply(as.data.frame(df), is.numeric), 'right', 'left')) 

工作正常。

感谢@daroczig发现。