【问题标题】:R: print table with panderR:带pander的打印表
【发布时间】:2017-08-29 14:14:14
【问题描述】:

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

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 打印的。

【问题讨论】:

  • 尝试先将a转换成data.frame。
  • 已经试过了,但是打印出来的布局没有我想要的。我的意思是,当我希望 Var1 的值作为行名、Var2 的值作为列名和频率在表中两者的交点时,它会打印两列的值和第三列的频率。
  • 这似乎是来自旧版本 pander 的错误。如果问题仍然存在,能否请您更新到最新版本并在 GH 上开票?
  • 更新后我仍然无法正常工作,即使退出并重新打开 R Studio 也是如此。我不知道您所说的“在 git hub 上开票”是什么意思,但如果您向我解释我必须做什么,我会很高兴这样做。
  • FTR相关的GH票我们整理了这个问题:github.com/Rapporter/pander/issues/309

标签: r pander


【解决方案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 发现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多