Afficher / imprimer toutes les lignes d'un tibble (tbl_df)

192

tibble (précédemment tbl_df ) est une version d'une trame de données créée par le dplyrpackage de manipulation de trame de données dans R. Il empêche les sorties de table longues lors d'un appel accidentel de la trame de données.

Une fois qu'une trame de données a été enveloppée par tibble / tbl_df, existe-t-il une commande pour afficher la trame de données entière (toutes les lignes et colonnes de la trame de données)?

Si j'utilise df[1:100,] , je verrai les 100 lignes, mais si j'utilise df[1:101,], cela n'affichera que les 10 premières lignes. Je voudrais afficher facilement toutes les lignes pour les faire défiler rapidement.

Existe-t-il une commande dplyr pour contrer cela ou un moyen de dérouler la trame de données?

Zhe Zhang
la source
4
Viewest inchangé avec les "tbl_df"objets.
G. Grothendieck
10
@ G.Grothendieck L'affichage est différent de l'impression.
Meg

Réponses:

229

Vous pouvez également utiliser

print(tbl_df(df), n=40)

ou avec l'aide de l'opérateur de tuyauterie

df %>% tbl_df %>% print(n=40)

Pour imprimer toutes les lignes, spécifiez tbl_df %>% print(n = Inf)

Tim
la source
28
si vous ne voulez pas vous soucier de la valeur de net que vous êtes déjà en train de jouer, vous pouvez utiliserdf %>% tbl_df %>% print(n = nrow(.))
ClaytonJY
18
En prolongeant la réponse de @ BLT, vous pouvez configurer l' n = Infimpression de toutes les lignes.
seasmith
10
print(avec un tibble) a également les options width = et n_extra = pour contrôler le nombre de colonnes imprimées, directement ou indirectement.
Zhe Zhang
3
@ClaytonJY J'ai également trouvé tbl_df %>% print(n = Inf)que cela fonctionnait.
Dannid
est-ce que quelqu'un sait pourquoi print(n = ...)active la notation scientifique dans l'affichage tibble?
Agile Bean
88

Vous pouvez utiliser as.data.frameou print.data.frame.

Si vous souhaitez que ce soit la valeur par défaut, vous pouvez modifier la valeur de l' dplyr.print_maxoption.

options(dplyr.print_max = 1e9)
Vincent Zoonekynd
la source
66

La vignette tibble a un moyen mis à jour de modifier son comportement d'impression par défaut:

Vous pouvez contrôler l'apparence par défaut avec des options:

options(tibble.print_max = n, tibble.print_min = m): s'il y a plus de n lignes, n'imprime que les m premières lignes. Utilisez options(tibble.print_max = Inf)pour toujours afficher toutes les lignes.

options(tibble.width = Inf) imprime toujours toutes les colonnes, quelle que soit la largeur de l'écran.

exemples

Cela imprimera toujours toutes les lignes:

options(tibble.print_max = Inf)

Cela ne limitera pas réellement l'impression à 50 lignes:

options(tibble.print_max = 50)

Mais cela limitera l'impression à 50 lignes:

options(tibble.print_max = 50, tibble.print_min = 50)
BLT
la source
1
Cela changera le comportement par défaut de tous les tibbles. Je cherchais un moyen de remplacer la contrainte par défaut. print(n=100)semble faire ce que je veux. (Les tableaux récapitulatifs de count(), par exemple, devraient s'afficher dans leur intégralité, alors que je veux que mes tableaux de données soient tronqués.)
Dannid
2
@dannid semble alors vouloir la réponse acceptée.
BLT
5

Comme détaillé dans la documentation bookdown , vous pouvez également utiliser une table paginée

mtcars %>% tbl_df %>% rmarkdown::paged_table()

Cela paginera les données et permettra de parcourir toutes les lignes et colonnes (sauf si configuré pour plafonner les lignes). Exemple:

entrez la description de l'image ici

Holger Brandl
la source
1
Comme décrit dans cette documentation: Si la table paginée est générée par un bloc de code dans un bloc-notes R, vous pouvez ajouter le paramètre rows.print=[n]aux options de bloc pour contrôler le nombre de lignes affichées par page.
Arthur Small
0

Je préfère tourner le tibble à data.frame. Ça montre tout et tu as terminé

df %>% data.frame 
Lefty
la source