2017-08-29 83 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發現。