2017-08-29 1 views
2

Lors de l'impression d'une table avec pander j'obtiens un message d'erreur Error in pandoc.table.return(...) : Wrong number of parameters (76 instead of *4*) passed: justify que je ne peux pas comprendre.R: table d'impression avec pander

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

Traceback:

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) 

Qu'est-ce que je fais faux? Mon objectif est d'imprimer la table au format tableau (valeurs de la variable 1 en tant que noms de lignes, valeurs de la variable 2 en noms de colonnes), et non si je convertis la table en une donnée (valeurs de la variable 1 de la colonne 1 , valeurs de la variable 2 dans la colonne 2, fréquence dans la colonne 3). Je sais que cela fonctionnerait avec print, mais je voudrais avoir la disposition de pander parce que toutes mes autres tables (du format de cadre de données) sont imprimées avec le pander.

+1

Essayez de convertir d'abord 'a' dans un data.frame. –

+0

Déjà essayé, mais il imprime sans la mise en page que je veux. Je veux dire qu'il imprime avec deux colonnes pour les valeurs et une troisième pour les fréquences, quand je veux les valeurs de Var1 comme noms de base, les valeurs de Var2 comme noms de colonnes et les fréquences à l'intersection des deux dans la table. – GaryDe

+0

Cela ressemble à un bug d'une ancienne version de 'pander'. Pouvez-vous s'il vous plaît mettre à jour à la version la plus récente et ouvrir un ticket sur GH si le problème persiste? – daroczig

Répondre

1

Je réalisé que je l'avais oublié mais j'avais qu'à un endroit:

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

Remplacement avec:

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

fonctionne très bien.

Merci @dococzig d'avoir trouvé cela.