Est-il possible d’imprimer le petit data.frames
sur la console de manière plus lisible?
Par exemple, serait-il possible de générer sur la console:
library(MASS)
iris[1:5, ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
comme
iris[1:5, ]
+--------------+-------------+--------------+-------------+---------+
| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
+--------------+-------------+--------------+-------------+---------+
1 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
2 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
3 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
4 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
5 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
+--------------+-------------+--------------+-------------+---------+
Je réalise que pour data.frames
grand, cela prendrait un temps inutile, mais si c'est une option, j'aimerais pouvoir examiner les petits cadres de manière plus structurée.
En particulier, lorsque j'ai deux champs de texte l'un à côté de l'autre, il serait beaucoup plus facile de les séparer entre deux champs, car l'espacement entre les mots a la même taille que l'espacement entre les colonnes.
Merci
Au cas où cela aiderait quelqu'un, je viens de trébucher sur le fait que knitr
's kable
réalise une jolie jolie impression. Combinez avec certaines des suggestions de .Rprofile
ci-dessus, cela semble réaliser ce que j'avais en tête.
> knitr::kable(head(iris))
| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species |
|------------:|-----------:|------------:|-----------:|:-------|
| 5.1| 3.5| 1.4| 0.2|setosa |
| 4.9| 3.0| 1.4| 0.2|setosa |
| 4.7| 3.2| 1.3| 0.2|setosa |
| 4.6| 3.1| 1.5| 0.2|setosa |
| 5.0| 3.6| 1.4| 0.2|setosa |
| 5.4| 3.9| 1.7| 0.4|setosa |
J'ai eu le même problème récemment et suis tombé sur le paquet huxtable
. Il est très flexible et peut-être un peu excessif pour une sortie de console plus agréable, mais cela m’a très bien servi.
Voici comment résoudre votre problème avec huxtable
:
library(huxtable)
library(magrittr)
small_iris <- iris[1:5, ]
iris_hux <-
hux(small_iris) %>%
add_colnames() %>%
set_bold(row = 1, col = everywhere, value = TRUE) %>%
set_all_borders(TRUE)
Je pense que toutes les fonctions parlent d'elles-mêmes. Pour une introduction complète, voir https://hughjonesd.github.io/huxtable/huxtable.html#adding-row-and-column-names .
print_screen(iris_hux)
donne cette sortie (dans la console!):
_ {Je n'ai pas encore compris comment supprimer les informations du bas sur les noms des colonnes. Si quelqu'un le sait, merci de le commenter!}
EDIT: Pour supprimer les noms de colonne en bas, utilisez colnames = FALSE
dans print_screen()
.
Vous pouvez essayer plusieurs méthodes.
Ajoutez quelques fonctions d’aide à votre .Rprofile
. Dans mon profil, j'ai
hh = function(d)
if(class(d)=="matrix"|class(d)=="data.frame") d[1:5,1:5]
Cette fonction imprime le coin supérieur gauche du bloc de données. j'ai aussi
ht = function(d, n=6) rbind(head(d, n), tail(d,n))
Créez votre propre fonction d'impression S3
pour les trames de données, par exemple.
print.data.frame = function(x, ..., digits = NULL,
quote = FALSE, right = TRUE,
row.names = TRUE)
message("hi")
Utilisez un package, par exemple dplyr
. Cependant, c'est un peu exagéré si tout ce que vous voulez, c'est une belle impression.
Si vous êtes également disposé à imprimer votre sortie dans le volet de visionneur (RStudio) plutôt que sur la console, je vous recommande d'utiliser le package DT
.
library(DT)
datatable(iris)
Cela présente plusieurs avantages, je pense: la sortie est jolie et bien agencée, le package est capable d’afficher des trames de données volumineuses sans devenir encombrant et il est hautement personnalisable de démarrer.